直接暴力三层循环解的,想着应该有更好的解法,但是试了好几次没有做出来,就暂时先这样做了,到后面的时候再想想能不能用其他解法解决
#include<iostream> #include<algorithm> using namespace std; string str; int main(){ while(cin>>str){ int maxn=0,flag=0,s=0,e=0; //暴力循环确定左右边界 for(int i=0;i<str.length();i++){ for(int j=str.length()-1;j>i;j--){ flag=0; int l,r; //判断这个段上是不是回文 for(l=i,r=j;l<=(i+j)/2;l++,r--){ if(str[l]!=str[r]){ flag=1; break; } } //如果这段上是回文 //那么再比这个短的就不用再看了,重新遍历下一次 if(flag==0){ maxn=max(maxn,(j-i+1)); break; } } } cout<<maxn<<endl; } return 0; }