为什么第三个打印出来是11而不是16啊
import java.util.Map;
import java.util.HashMap;
public class demoSubstring {
public static void main(String[] args) {
System.out.println(lengthOfLongestSubstring("abcdeabc"));
System.out.println(lengthOfLongestSubstring("abcde"));
System.out.println(lengthOfLongestSubstring("abcdea oabcd efghi jklmn shd"));//oabcde fghij klmns
}
public static int lengthOfLongestSubstring(String s) {
int n = s.length();
int left = 0;
int max = 0;
HashMap<Character ,Integer> map = new HashMap<>();
for(int i = 0; i < n ;i++){
if (map.containsKey(s.charAt(i))) {
left = Math.max(left,map.get(s.charAt(i))+1);//map.get(获得指定key映射value); s.charAt将重复2次的字符返回,map.get会将前一个第一个字符K
//字符k的value映射出来
}
max = Math.max(max, i + 1-left);
map.put(s.charAt(i), i);
}
return max;
}
}