2016普级组模拟试题(20161114) 给出字符串

题目:

2016普级组模拟试题(20161114) 给出字符串

题意:

给出我们一个字符串,求他们中最长的子串的长度

分析:

首先,我们要注意的是题目中提出我们要求的是子串,所以长度>1!
然后,我们再注意下字符串的长度,瞬间哈哈——<=60。随后我们就可以纯暴力AC。

AC后感想:

不得不说,这题真的是水。但是小编一开始傻傻的以为第一次找到的就一定是最大值。可想而知。。。但居然还AC了9个点《⊙⊙》。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define LL long long
using namespace std;
inline LL read()
{
    LL a=0,f=1;char s=getchar();
    while(s<'0'||s>'9') {if(s=='-') f=-1;s=getchar();}
    while(s>='0'&&s<='9') {a=a*10+s-'0';s=getchar();}
    return a*f;
}
string s,z,c,kc;
int max(int x,int y)
{
    return x>y? x:y;
}
int main()
{
    cin>>s;
    int l=s.size()-1;
    int maxj=0;
    for(int i=0;i<=l-1;i++)//枚举起始位置
      {
        for(int j=l;j>=2;j--)//枚举长度
        {
            c=kc;z=kc;//初始化。kc为空串
            for(int k=i;k<=i+j-1;k++)//摘取字符串
              c+=s[k];
            for(int k=i+1;k<=l;k++)
              z+=s[k];
            if(z.find(c)!=-1) 
              maxj=max(maxj,j);//更新最大值
        }
      }
    printf("%d",maxj);//输出
    fclose(stdin);
    fclose(stdout);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值