牛牛非常怕他的女朋友,怕到了走火入魔的程度,以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行。现在有一个长度为m的只包含小写字母‘a’-‘z’的字符串x,牛牛想知道能令他不害怕的最长子串的长度是多少。(对于字符串”abc”来说,”c”,”ab”都是原串的子串,但”ac”不是原串子串)
输入
"abcdefghijklmn"
输出
14
输入
"ypknnbpiyc"
输出
7
说明
“pknnbpi”为其符合条件的最长子串,长度为7。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 返回符合题意的最长的子串长度
* @param x string字符串
* @return int整型
*/
int Maximumlength(string x) {
// write code here
int nn = 0, pn = 0, yn = 0, left = 0, ans = 0;
for(int i = 0; i < x.size(); ++i){
if(x[i] == 'n') nn ++;
if(x[i] == 'p') pn ++;
if(x[i] == 'y') yn ++;
while(nn >= 1 && pn >= 1 && yn >= 1){
if(x[left] == 'n') nn--;
if(x[left] == 'p') pn--;
if(x[left] == 'y') yn--;
left++;
}
ans = max(ans, i - left + 1);
}
return ans;
}
};