题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <iostream>
#include <vector>
using namespace std;
bool is_huiwen(string s){
int n = s.size();
for(int i = 0;i < n/2;i++){
if(s[i] != s[n-i-1]){
return false;
}
}
return true;
}
int main() {
string s;
cin >> s;
int n = s.size();
vector<int> dp(n);
dp[0] = 1;
int max_l = dp[0];
for(int i = 1;i < n;i++){
if(i - dp[i-1] - 1 >= 0 && s[i] == s[i - dp[i-1] - 1]){
dp[i] = dp[i-1]+2;
}else{
for(int j = i-dp[i-1];j <= i;j++){
if(s[j] == s[i] && is_huiwen(s.substr(j,i-j+1))){
dp[i] = i-j+1;
break;
}
}
}
max_l = max(max_l,dp[i]);
}
cout << max_l;
}
// 64 位输出请用 printf("%lld")
SHEIN希音公司福利 350人发布