我还以为是什么动态规划,做了一下就是简单的回文字符串的判断而已,从当前i处的字符左右同时遍历寻找相同字符,速度很快
# include <bits/stdc++.h>
using namespace std;
string S;
int main() {
getline(cin, S);
int maxLen = 1;
for(int i = 0;i < S.size();++i){
int l = i-1, r = i+1;
int tempLen = 0;
if(S[i] == S[r]) { // 偶数情况
l = i; // i和r处字符相等,所以让l等于i
while(S[l] == S[r] && l >= 0 && r < S.size()) { // 检查i的两侧的相等字符
tempLen+=2;
l--, r++;
}
} else
if(S[l] == S[r]) { // 奇数情况
tempLen = 1; // 奇数情况将中间i处的字符算入长度
while(S[l] == S[r] && l >= 0 && r < S.size()) { // 检查i的两侧的相等字符
tempLen+=2;
l--, r++;
}
}
maxLen = max(maxLen, tempLen);
}
cout << maxLen << endl;
return 0;
}