题解 | #密码截取#

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

#include<iostream>
#include<string.h>
#include<algorithm>
int nicestr(char *s,char c,int i,int n);
using namespace std;
int main(){
    char s[2502];
    fgets(s,2502,stdin);int n=strlen(s)-1;
//    cout<<nicestr(s,'A',n-1,n);
     int dp[n];dp[0]=1;int maxnum=dp[0];
    for(int i=1;i<n;i++){
    int flag=nicestr(s,s[i-1],i-1,dp[i-1]);
      if(flag==1&&s[i]==s[i-1]){
      dp[i]=dp[i-1]+1;
      }else if(s[i]==s[i-dp[i-1]-1])dp[i]=dp[i-1]+2;
          
      else{
          if(s[i-1]==s[i])dp[i]=2;
else dp[i]=1;
      }
        maxnum=max(maxnum,dp[i]);
        }
    cout<<maxnum;
}
int nicestr(char *s,char c,int i,int n){
    int flag=1;
    while(n>0){
        if(s[i--]!=c){
          flag=0;break;
        }
        n--;
}
    return flag;
}
全部评论

相关推荐

08-21 13:53
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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