设置初始位置为0,记录出现的字符,每次出现已经被记录的字符时,使用此时的下标到初始位置的距离与最大值比较,大于则替换,并更改初始位置为上一次此字符的位置
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character, Integer> hashmap = new HashMap<>();
int sum = 0, index = 0;
int i = 0;
for(; i < s.length(); i++){
char ch = s.charAt(i);
if(hashmap.containsKey(ch) && hashmap.get(ch) >= index){
if(i - index > sum) sum = i - index;
index = hashmap.get(ch) + 1;
}
hashmap.put(ch, i);
}
if(i - index > sum) sum = i -index;
return sum;
}
}