给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
思路:不断插入,如果有字符重复,左指针指向重复的字符位置,重新开始计算长度,max中存放的是无重复字符串的最大长度。
class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
int left = 0, max = 0;
int n = s.length();
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
left = Math.max(left, map.get(c) + 1);
}
map.put(c, i);
max = Math.max(max, i - left + 1);
}
return max;
}
}