题解 | #密码截取#
密码截取
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; }
加的都是连续的头尾的,也就是说不会打乱原有序列,直接找最大回文子串即可。