题目描述
Longest Substring Without Repeating Characters
AC代码
class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character,Integer> map=new HashMap<>();
int ans=0;
for(int i=0,j=0;i<s.length();i++){
if(!map.containsKey(s.charAt(i)))
map.put(s.charAt(i),1);
else{
int val=map.get(s.charAt(i));
map.put(s.charAt(i),++val);
}
while(map.get(s.charAt(i))>1)
{ int val=map.get(s.charAt(j));
map.put(s.charAt(j++),--val);
}
ans=Math.max(ans,i-j+1);
}
return ans;
}
}
简化之后
class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character,Integer> map=new HashMap<>();
int ans=0;
for (int j = 0, i = 0; j < s.length(); j++) {
if (map.containsKey(s.charAt(j))) {
i = Math.max(map.get(s.charAt(j)), i);
}
ans = Math.max(ans, j - i + 1);
map.put(s.charAt(j), j + 1);
}
return ans;
}
}