题目链接:最长回文子串_牛客题霸_牛客网
注意点:
1.采用中心拓展法
2.需要注意:回文中心数可能是一个字符也可能是两个字符,所以需要比较这两种情况下最大的回文串
#include<iostream>
#include<string>
using namespace std;
//判断最长的回文数
int longestPalindrome(string &s, int left, int right){
while(left >=0 && right <= s.size() && s[left] == s[right]){
left--;
right++;
}
return right - left -1;
}
int main(){
string str;
//回文数中心奇数len1,回文数中心偶数len2
int len1 = 0;
int len2 = 0;
int maxlen = 0;
while(cin >> str){
for (int i = 0; i < str.size() - 1; ++i){
//回文数中心是一个字符
len1 = longestPalindrome(str,i, i);
//回文数中心是两个字符
len2 = longestPalindrome(str,i,i+1);
maxlen = max(maxlen,max(len1,len2));
}
cout << maxlen<<endl;
}
return 0;
}