解題思路
根據 neetcode 的直覺解法解題。以「自己」為中心,左右尋找最佳可能解,分成偶數奇數長度兩種來判斷。
程式碼
class Solution {
public:
string longestPalindrome(string s) {
int maxLen = 0, left, right;
string maxP = "";
for(int i=0; i<s.size(); i++)
{
// odd
left = i, right = i;
while(left >=0 && right < s.size() && s[left] == s[right])
{
if((right - left + 1) > maxLen)
{
maxLen = right - left + 1;
maxP = s.substr(left, right - left + 1);
}
left--;
right++;
}
// even
left = i, right = i+1;
while(left >=0 && right < s.size() && s[left] == s[right])
{
if((right - left + 1) > maxLen)
{
maxLen = right - left + 1;
maxP = s.substr(left, right - left + 1);
}
left--;
right++;
}
}
return maxP;
}
};
沒有留言:
張貼留言