題目: LeetCode - 5. Longest Palindromic Substring
題目說明
給一個字串,求此字串最長的回文子字串。
解題思路
回文的形式有兩種,一種是奇數個數,一種是偶數個數,所以我們使用一個迴圈遍歷 s,嘗試將字串中的每個端點當作回文的中間並找出回文的長度,找出最長的長度並記錄起始點即可。
參考解法
| 12
 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;
 }
 };
 
 |