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