2023年2月7日 星期二

5. Longest Palindromic Substring

解題思路

根據 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;
    }
};

沒有留言:

張貼留言