时间:2020-03-13
概述:回文字符串 查找字符串
C++找到字符串中最长的回文子串,并返回其长度,算法思想:本算法的一次判断每个字符的前后回文的长度,选取最大的那个输出;其中,start记录最长字符串的初始位置:
class Solution {
public:
string longestPalindrome(string s) {
if (s.empty())
return "";
if (s.size() == 1)
return s;
int start = 0, maxsub = 0;//stsrt记录最终的最长子串的起始位置,maxsub记录最长的长度
for (int i = 0; i < s.size(); i++)
{
int j = i, k = i;//j记录子串的开始位置,k记录子串结束的位置;
while (k < s.size() && s[k] == s[k + 1])//如果出现相同的字符
k++;
while (k0 && s[j - 1] == s[k + 1])
{
j--;
k++;
}
if (maxsub < k - j + 1)
{
start = j;
maxsub = k - j + 1;
}
}
return s.substr(start, maxsub);
}
};