AcWing 61. 最长不含重复字符的子字符串
原题链接
简单
作者:
Fant.J
,
2019-08-20 23:44:39
,
所有人可见
,
阅读 814
class Solution {
public int longestSubstringWithoutDuplication(String s){
Map<Character, Integer> hash = new HashMap<>();
int res = 0;
// 往hash里放值
for (int i = 0; i < s.length(); i++) {
hash.put(s.charAt(i),0);
}
// 双指针判断
for (int i = 0, j= 0; j < s.length(); j++) {
int f = hash.get(s.charAt(j));
hash.put(s.charAt(j), ++f);
// 如果前面的数 ++ 比1大, 将前面的数全部删了
if (f > 1){
// 删除前面的数
while (i < j){
int b = hash.get(s.charAt(i));
hash.put(s.charAt(i), --b);
i++;
// 如果j的数为1 , 推出
if (hash.get(s.charAt(j)) == 1){
break;
}
}
}
res = Math.max(res, j-i+1);
}
return res;
}
}