5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。
示例 2:
输入: "cbbd" 输出: "bb"
您是否在真实的面试环节中遇到过这道题目呢?
class Solution {
public:
string longestPalindrome(string s) {
int slen=s.size();
int len,cnt;
int x,y;
/**
001-1: x=0;y=slen-1;
002-1: x=0;y=slen-2;
002-2: x=1;y=slen-1;
003-1: x=0;y=slen-3;
003-2: x=1;y=slen-2;
003-3: x=2;y=slen-1;
...
until x>=y;
**/
/*
for(cnt=0;cnt<slen;cnt++)
{
printf("%c",s[cnt]);
}
printf("\n");
*/
for(len=slen;len>0;len--)
{
for(cnt=0;cnt+len<=slen-1;cnt++)
{
x=cnt;y=cnt+len;
/*
printf("x=%d,y=%d.\n",x,y);
*/
while(x<y)
{
if(s[x]!=s[y])
{
break;
}
else
{
if((x==y-1)||(x==y-2))
{
return s.substr(cnt, len+1);
}
}
x++;
y--;
}
}
}
return s.substr(0, 1);
}
};
提交记录
94 / 94 个通过测试用例 | 状态: 通过 |
执行用时:128 ms |
我的提交执行用时
已经战胜 26.01 % 的 cpp 提交记录