题目链接:https://www.patest.cn/contests/pat-a-practise/1040
题目大意:求一个字符串的最大回文子串的长度
解题思路:
- 定义一个判断回文字符串的函数
- 遍历所有子串,找到最长的回文子串
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
bool isSymmetric(string s,int left,int right){
/*判断字符串s的left到right子串
是不是回文字符串*/
for(int i=left,j=right;i<=j;i++,j--){
if(s[i]!=s[j])
return false;
}
return true;
}
int main(int argc, char const *argv[])
{
string s;
getline(cin,s);
int maxlength=0;
//遍历所有子串
for(int i=0;i<s.length();i++){
for(int j=i;j<s.length();j++){
if(isSymmetric(s,i,j)&&(j-i+1)>maxlength){//是回文串且长度较长
maxlength=j-i+1;
}
}
}
cout<<maxlength<<endl;
return 0;
}