解題思路
根據 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; } };
沒有留言:
張貼留言