牛牛的npy

牛牛算数

https://ac.nowcoder.com/acm/contest/9556/A

链接:https://ac.nowcoder.com/acm/contest/9556/B
来源:牛客网

牛牛非常怕他的女朋友,怕到了走火入魔的程度,以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行。现在有一个长度为m的只包含小写字母‘a’-‘z’的字符串x,牛牛想知道能令他不害怕的最长子串的长度是多少。(对于字符串”abc”来说,”c”,”ab”都是原串的子串,但”ac”不是原串子串)

设置三个变量,n,p,y,逐个遍历x的字符,如果字符为n或p或y,则把对应变量设置为当前字符索引。
如果n,p,y中的一个未初始化,那么子串长度为字符索引+1
如果都初始化,找n,p,y里面最小的一个,与索引相减 + 1
记录遍历过程最大的字串长度

import java.util.*;

public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 返回符合题意的最长的子串长度
* @param x string字符串
* @return int整型
*/
public int Maximumlength (String x) {
// write code here
int n = -1,p = -1,y = -1;
int cur = 0,max = 0;
for(int i = 0;i < x.length();i++){
char c = x.charAt(i);
if(c == 'n')n = i;
if(c == 'p')p = i;
if(c == 'y')y = i;

        if(n == -1 || p == -1 || y == -1){
            cur++;
            max = max > cur ? max : cur;

        }else{
            int last = -1;
            if(n < p)last = n;
            else last = p;
            if(y < last)last = y;
            cur = i - last;
            max = max > cur ? max : cur;

        }


    }
    return max;


}

}

全部评论

相关推荐

01-15 19:59
中山大学 C++
牛客60887332...:你这是人写出来的? 本科标到硕士后面 留那么多空给 hr 填?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务