哇哇哇,看到字符串的问题就兴奋,虽然没有什么算法,但是就是思维的一种启迪呀,当然我也是被启迪的弟弟,总体的思路就是分两种回文字符串,一种是奇数-中间有一个字符,另一种是偶数-两两对应的。
所以 枚举 吧,第一个循环是从第一个字符到最后一个开始遍历-以每一个为起点,奇数的话就看之前和之后,偶数就是永远把这个当左边的,当然右边的也应该是一样的,不符合情况就跳出循环,符合就+=2
#include <bits/stdc++.h>
using namespace std;
int main(){
string a;
getline(cin,a);
int len=a.length(),ans=0;
for(int i=0;i<len;i++){
int temp=1;
for(int j=1;j<len;j++){
if(j+i>len||i-j<0||a[i+j]!=a[i-j])break;
temp+=2;
}
ans=ans>temp?ans:temp;
temp=0;
for(int j=1;j<len;j++){
if(j+i>len||i-j+1<0||a[i+j]!=a[i-j+1])break;
temp+=2;
}
ans=temp>ans?temp:ans;
}
cout<<ans;
return 0;
}