思路
思路就是从左到右每次加入一个元素,存到list中,
如果当前要加入的元素在list中,就从左到右一次删除一个元素,直到list中无当前元素为止;
如果加入的元素不在list中,就直接加入即可。
代码
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length() == 1 || s.length()==0){
return s.length();
}
List set = new ArrayList();
int max = 1;
int left = 0;
int right = 1;
set.add(s.charAt(0));
while(right < s.length() && left < right){
if(set.contains(s.charAt(right))){
while(left < right && set.contains(s.charAt(right))){
set.remove(0);
left++;
if(set.size() == 0){
break;
}
}
set.add(s.charAt(right));
}else{
set.add(s.charAt(right));
}
right++;
max =set.size() > max ? set.size():max;
}
return max;
}
}