- 暴力法求解最长回文串
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
while(cin>>s){
int max_ = 0, flag = 0;
//暴力循环确定左右边界
for(int i= 0; i< s.size();i++){
for(int j = s.size()-1; j>i ;j--){//锚点思路
flag = 0;
int l,r;//动态变化的锚点。
//判断这个段上是不是回文
for(l= i,r = j; l<=(l+r)/2; l++,r--){
if(s[l]!=s[r]){
flag = 1;
break;//剪枝
}
}
//如果这段上是回文
//那么再比这个短的就不用再看了,重新遍历下一次
if(flag==0){
max_ = max(max_,j-i+1);
break;//不用在重复判断
}
}
}
cout<<max_<<endl;
}
return 0;
}
京公网安备 11010502036488号