算法-无重复字符的最长子串
问题描述:
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。
给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。
给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。
一个java实现
class Solution { public int lengthOfLongestSubstring(String s) { char[] chars = s.toCharArray(); Map<Character, Integer> characterMap = new HashMap<>(); int result = 0; for (int i = 0; i < chars.length; i++) { char c = chars[i]; Integer pos = characterMap.get(c); if (pos == null) { characterMap.put(c, i); if (i == chars.length - 1) { if (characterMap.size() > result) result = characterMap.size(); } } else { if (characterMap.size() > result) result = characterMap.size(); i = pos; characterMap = new HashMap<>(); } } return result; } }

浙公网安备 33010602011771号