题解 | #最长回文子串#
最长回文子串
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")
基本思路是判断输入字符中的以每个字符结尾的最大回文长度。