您的位置:首页 > 其它

leetcode 005 最长回文子串

2018-12-23 21:06 393 查看

思路和003很相似,003是找最长的不重复序列,并返回长度;

对于外循环的每一个i,判断它后面的每一个j,是否能使得s【i】到s【j】构成回文序列;

如果构成了回文序列,count保存此时的回文序列长度,out保存的是程序到现在为止、已经得到的最大长度;

如果count>out了,out=count,并让res保存现在这个更长一点的回文字符串;

当然也可能根本就没有回文串,最后判断一下即可;

需要注意的是,如果j到了某一位置,s【i】到s【j】不构成回文序列,此时j仍要++,继续判断,比如“aba”;

代码:

class Solution {
public:
static  string longestPalindrome(string s) {
int out = 0, i = 0, j, count = 0, m,n;
string res;
if (!s.size()) return res;
for (i = 0; i < s.size() - 1; i++)
{
count = 1;
j = i + 1;
while (j < s.size())
{
m = i,n=j;
while (m<=n)
{
if (s[m] == s[n]) m++,n--;
else  break;
}
if (m > n)
{
count = j - i + 1;
if (count > out)
{
out = count;
m = i, n = j;
res.clear();
for (m; m <= n; m++)
res += s[m];
}
}
j++;
}
}
if (!out) res +=s[0];
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: