题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.size();
int dp[n][n];
int max_value = 0;
for(int a = 0; a < n; a++) {
for(int i = 0; i < n; i++) {
int j = i + a;
if(j >= n) continue;
if(s[i] == s[j] && (j - i < 2 || dp[i + 1][j - 1])) {
dp[i][j] = 1;
max_value = max(j - i + 1, max_value);
}
}
}
cout << max_value << endl;
}
加的都是连续的头尾的,也就是说不会打乱原有序列,直接找最大回文子串即可。

格力公司福利 347人发布