题目描述:
输入输出Demo:
解析:
在LeetCode上本题属于Medium难度,大概思路是维护2个指针,这2个指针之间的字符没有重复,滑动窗口
class Solution {
public int lengthOfLongestSubstring(String s) {
int maxLen = 0;
int left = 0;
if (s.length() == 0) {
return 0;
}
Map<Character, Integer> map = new HashMap<>(); //用来保存字符和出现的位置
for (int right = 0; right < s.length(); right++) {
char c = s.charAt(right); //当前的字符
if (map.containsKey(c) && left <= map.get(c)) { //表明当前字符在窗口里(窗口里保存的是无重复的字符)
left = map.get(c) + 1; //left指针移到字符(重复的)的下一位
}
map.put(c, right);
maxLen = Math.max(maxLen, right - left + 1);
}
return maxLen;
}
}