挂着回文的名号的水题

来源:互联网 发布:易吧进销存软件官网 编辑:程序博客网 时间:2024/05/12 18:46

dlut 1248:

1248: 回文串

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 36  Solved: 15
[Submit][Status][Web Board]

Description

现在wanghang定义s[i,j]代表字符串s的第i个字符到第j的字符组成的字符串,并称作s[i,j]是s的子串。
比如s="abcbde"
则s[1,3]="abc"
同样s[i,j]也是一个字符串,s[1,3][2,3]代表串是"bc"
 
wanghang定义reverse(s)代表把一个字符串翻转操作
reverse("abcd") = "dcba"
 
wanghang定义一个字符串s是回文串当且仅当s=reverse(s)成立
 
比如:aba是回文串,而abb不是回文串
 
现在wanghang有一个字符串str,wanghang想知道str的最长子串的长度,满足这个子串的所有子串都是回文的。
即求最长的str[i,j]对任意b>=a满足str[i,j][a,b]=reverse(str[i,j][a,b])

Input

第一行一个正整数T<=10代表测试数据个数
每组测试数据一行,给出字符串str,保证|str|<=1000000,字符串都是用小写字母组成的

Output

str的最长子串的长度,满足这个子串的所有子串都是回文的

Sample Input

2
aaaaaaa
aab

Sample Output

7
2






不要被他的表象给迷惑了,他就是求连续的相同字符最大的个数

#include<cstring>#include<cstdio>#include<iostream>using namespace std;const int maxn=1000005;char a[maxn];int main(){    int t;    scanf("%d",&t);    while(t--){        int Max=0,temp=1;       scanf("%s",a);       for(int i=1;i<strlen(a);i++){            if(a[i]==a[i-1])++temp;            else {                Max=max(Max,temp);                temp=1;            }       }       printf("%d\n",max(Max,temp));    }    return 0;}


0 0
原创粉丝点击