題目: LeetCode - 5. Longest Palindromic Substring
題目說明
給一個字串,求此字串最長的回文子字串。
解題思路
回文的形式有兩種,一種是奇數個數,一種是偶數個數,所以我們使用一個迴圈遍歷 s
,嘗試將字串中的每個端點當作回文的中間並找出回文的長度,找出最長的長度並記錄起始點即可。
參考解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public: string longestPalindrome(string s) { _s = s, n = s.size(); int len = INT_MIN, start, curLen; for(int i = 0; i < n; ++i) { curLen = max(getLength(i, i), getLength(i, i + 1)); if(curLen > len) len = curLen, start = i - (curLen - 1) / 2; } return s.substr(start, len); } private: string _s; int n; int getLength(int l, int r) { while(l >= 0 && r < n && _s[l] == _s[r]) --l, ++r; return r - l - 1; } };
|