无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
- 输入: s = “abcabcbb”
- 输出: 3
- 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
思路:滑动窗口
class Solution {
public int lengthOfLongestSubstring(String s) {
int res = 0;
HashMap<Character, Integer> ht = new HashMap<Character, Integer>();
int pre = -1;
for (int i = 0; i < s.length(); i++) {
if (i != 0) ht.remove(s.charAt(i - 1));
while (pre + 1 < s.length() && !ht.containsKey(s.charAt(pre + 1))) {
ht.put(s.charAt(pre + 1), 1);
pre++;
}
res = Math.max(res, pre - i + 1);
}
return res;
}
}