其他分享
首页 > 其他分享> > 怕npy的牛牛

怕npy的牛牛

作者:互联网

牛牛非常怕他的女朋友,怕到了走火入魔的程度,以至于每当他看到一个字符串同时含有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;
    }
};

 

标签:子串,nn,++,int,npy,ans,left
来源: https://blog.csdn.net/qq_24624539/article/details/110453017