AcWing 61. 最长不含重复字符的子字符串java
原题链接
简单
作者:
huaqingren
,
2020-10-24 16:30:06
,
所有人可见
,
阅读 371
两个指针i,j.当j指针所在字符出现>1时,更新i的位置,保持i,j之间的字符不重复
class Solution {
public int longestSubstringWithoutDuplication(String s) {
Map<Character,Integer> map=new HashMap<>();
int ans=0;
for(int i=0,j=0;j<s.length();j++)
{
char ch=s.charAt(j);
if(map.containsKey(ch))
{
map.put(ch,map.get(ch)+1);
while(map.get(s.charAt(i))==1)
{
map.put(s.charAt(i),map.get(s.charAt(i))-1);
if(map.get(s.charAt(i))==0)
map.remove(s.charAt(i));
i++;
}
map.put(s.charAt(i),map.get(s.charAt(i))-1);
i++;
}
else
{
map.put(ch, 1);
}
ans=Math.max(ans, j-i+1);
}
return ans;
}
}