本文主要是介绍Longest Substring with At Most Two Distinct Characters,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Given a string, find the length of the longest substring T that contains at most 2 distinct characters.
For example,Given s = “eceba”
,
T is "ece" which its length is 3.
思路:同向双指针,跟Longest Substring with At Most K Distinct Characters 一模一样,i是主指针,j是辅指针,然后模板套起来,注意要判断如果即将要大于k的时候,j停下来,不做任何事情,update res,然后i++;代码跟K一模一样,只是把k改成2即可;
class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {if(s == null || s.length() == 0) {return 0;}char[] ss = s.toCharArray();int[] scount = new int[256];int C = 0;int j = 0;int maxlen = 0;for(int i = 0; i < ss.length; i++) {// move j;while(j < ss.length && C <= 2) {if(scount[ss[j]] == 0) {if(C == 2) {break;}C++;}scount[ss[j]]++;j++;}// update result;// 最多是k,小于k也必须update maxlen;if(j - i > maxlen) {maxlen = j - i;}// remove i;scount[ss[i]]--;if(scount[ss[i]] == 0) {C--;}}return maxlen;}
}
这篇关于Longest Substring with At Most Two Distinct Characters的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!