c_cpp 给定一个字符串S,找到S中最长的回文子字符串。您可以假设S的最大长度为1000,并且存在一个单一的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 给定一个字符串S,找到S中最长的回文子字符串。您可以假设S的最大长度为1000,并且存在一个单一的相关的知识,希望对你有一定的参考价值。
string longest_palindrome(const string& s) {
if(s.empty()) return "";
int N = s.size();
int max_len = 1, start = 0; // gist, start should be initialized. otherwise, "a" will have error
for(int i=0; i<N; ++i) { // should be N not N-1
int j = i, k = i;
while(j >= 0 && k < N) {
if(s[j] != s[k]) break;
if(max_len < k-j+1) {
max_len = k-j+1;
start = j;
}
j--;
k++;
}
j = i; k = i+1;
while(j >= 0 && k < N) {
if(s[j] != s[k]) break;
if(max_len < k-j+1) {
max_len = k-j+1;
start = j;
}
j--;
k++;
}
}
return s.substr(start, max_len);
}
以上是关于c_cpp 给定一个字符串S,找到S中最长的回文子字符串。您可以假设S的最大长度为1000,并且存在一个单一的的主要内容,如果未能解决你的问题,请参考以下文章
最长回文子串
5. 最长回文子串
[LeetCode] 最长回文子串
最长回文子串
最长回文子串 (动态规划法中心扩展算法)
最长回文子序列