Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example 2:
Input: "cbbd" Output: "bb"
暴力法,既然是回文串,那么肯定是对称字符串,但这里有一点要注意,就是要考虑两种情况:
1.字符对称,也就是当字符串字符个数为奇数时,对称中心是字符,例如aba。
2.间隔对称,也就是当字符串字符个数为偶数时,对称中心是两个字符的间隔,例如abba。
代码如下:
class Solution {
public:
string longestPalindrome(string s) {
int left = 0;
int right = 0;
int longest = 0;
string ret;
for (int i = 0; i < s.size(); ++i)
{
left = right = i;
while (left >= 0 && right < s.size() && s[left] == s[right])
{
--left;
++right;
}
if (right - left - 1 > longest)
{
ret = s.substr(left + 1, right - left - 1);
longest = right - left - 1;
}
}
for (int i = 0; i < s.size() - 1; ++i)
{
left = i;
right = i + 1;
while (left >= 0 && right < s.size() && s[left] == s[right])
{
--left;
++right;
}
if (right - left - 1 > longest)
{
ret = s.substr(left + 1, right - left - 1);
longest = right - left - 1;
}
}
return ret;
}
};