题目:输入一个字符串,输出其最长回文串的长度,以及最长回文串的个数,不区分大小写。
例如
输入:aB 输出: 1 2
输入:aBA 输出: 3 1
输入:aaaa 输出: 4 1
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
string str;
bool IsHuiwen(int i,int j)
{
while(i<=j)
{
if(str[i++]!=str[j--])
return false;
}
return true;
}
int main()
{
int max=1,n;
cin>>str;
n=0;
int i,j;
for(i=0;i<str.length();i++)
{
if(str[i]>='A' && str[i]<='Z')
str[i]+=('a'-'A');
}
//对于每个i,从i+max开始,找到最长回文长度,若长度大于max=1,重新机,若找不到,继续
for(i=0;i<str.length() && i+max<=str.length();i++)
{
for(j=str.length()-1;((j-i)+1)>=max;j--)
{
if(IsHuiwen(i,j))
break;
}
if(((j-i)+1)==max)
n++;
else if(((j-i)+1)>max)
{
max=j-i+1;
n=1;
}
}
cout<<max<<" "<<n<<endl;
return 0;
}
703

被折叠的 条评论
为什么被折叠?



