publicintlengthOfLongestSubstringTwoDistinct(String s){int i =0, j =0;int[] dict =newint[256];int cnt =0;int res =0;for(; i < s.length(); i++){while(j < s.length()&& cnt <=2){
dict[s.charAt(j)]++;if(dict[s.charAt(j)]==1) cnt++;//第一次从0到1if(cnt <=2) res = Math.max(res, j - i +1);
j++;}
dict[s.charAt(i)]--;if(dict[s.charAt(i)]==0) cnt--;}return res;}
方法2
publicintlengthOfLongestSubstringTwoDistinct(String s){
Map<Character, Integer> map =newHashMap<>();int l =0, r =0, n = s.length(), ans =0;char[] chas = s.toCharArray();while(r < n){
map.put(chas[r], map.getOrDefault(chas[r],0)+1);if(map.keySet().size()<=2) ans = Math.max(ans, r - l +1);while(map.keySet().size()==3){
map.put(chas[l], map.get(chas[l])-1);if(map.get(chas[l])==0) map.remove(chas[l]);
l++;}
r++;}return ans;}
928 · 最多有两个不同字符的最长子串方法1 public int lengthOfLongestSubstringTwoDistinct(String s) { int i = 0, j = 0; int[] dict = new int[256]; int cnt = 0; int res = 0; for (; i < s.length(); i++) {