题目:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例2:
输入: "cbbd"
输出: "bb"
算法:
时间复杂度:
O
(
n
2
)
O(n^2)
O(n2)
空间复杂度:
O
(
1
)
O(1)
O(1)
代码:
class Solution {
public:
string longestPalindrome(string s)
{
int len = s.size();
string result = "";
if (len == 0) return result;
for (int i = 0; i < len;i++)
{
int left = i, right = i;
while (left > 0 && right < len - 1 && s[left - 1] == s[right+1])
{
left--; right++;
}
result = right - left + 1 > result.size() ? s.substr(left, right - left + 1) : result;
}
for (int i = 0; i < len; i++)
{
if (s[i] == s[i + 1])
{
int left = i, right = i + 1;
while (left > 0 && right < len - 1 && s[left - 1] == s[right + 1])
{
left--; right++;
}
result = right - left + 1 > result.size() ? s.substr(left, right - left + 1) : result;
}
}
return result;
}
};
执行结果: