Problem Description
回文串大家都知道是什么吧~
现在给你一串字符串
请求出该字符串最长的连续非回文子串的长度是多少。
Input
长度不超过10^6。题目保证字符串只由小写字母a-z组成。
Output
一个整数,表示最长非回文串的长度。若不存在输出-1。
Sample Input
AAABA
Sample Output
5
题意:输入一个字符串序列,然后求该序列的最长非回文子串;
思路:此题一共只有三种情况:
1:输入的串是回文串,那么就输出 串的长度-1即可;
2:输入的串不是回文串,那么该串就是最长回文子串;
3:输入的字符全部相等,那么就不存在非回文子串;输入-1即可;
下面是AC代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
string s,s1;
int main()
{
while(cin>>s)
{
s1=s;int m=1;
reverse(s1.begin(),s1.end());//字符串翻转函数
int l=s1.length();
for(int i=1;i<l;i++)//判断字符全部相等的情况
{
if(s[i]==s[i-1])
{
m++;
}
}
if(m==l)
{
cout<<"-1"<<endl;
}
else
{
if(s1==s)
cout<<l-1<<endl;
else
cout<<l<<endl;
}
}
return 0;
}