题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
#include <iostream>
using namespace std;
int main() {
int mxlen = 1;
string s;
cin >> s;
for(int i=1; i<s.size(); i++){
for(int j=0; j<i; j++){
int k = j, u = i;
while(s[k] == s[u] && k<u){
k++;
u--;
}
// 注意这里的判断条件:k>=u,只有这样才能包含子串个数是偶数和奇数的所有情况
if(k>=u && (i-j+1)>mxlen){
mxlen = i-j+1;
}
}
}
cout << mxlen << endl;
return 0;
}
// 64 位输出请用 printf("%lld")
基本思路是判断输入字符中的以每个字符结尾的最大回文长度。
查看11道真题和解析