[LeetCode]5. Longest Palindromic Substring
题目描述
思路
维护最小起始点和最长子串的长度
实质上是维护最小起始点和他对应的最大结束点
详见代码
代码
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
string longestPalindrome(string s) {
if (s.size() == 0)
return "";
int minStart = 0, maxLen = 1;
for (int i = 0; i < s.size();) {
int end = i, start = i;
// 对于相同的字符,一定是回文串
while (end < s.size() - 1 && s[end] == s[end + 1])
++end;
i = end + 1;
// 首尾相同 回文串长度可以增加
while (start > 0 && end < s.size() - 1 && s[start - 1] == s[end + 1]) {
--start;
++end;
}
int len = end - start + 1;
if (len > maxLen) {
maxLen = len;
minStart = start;
}
}
return s.substr(minStart, maxLen);
}
};
int main() {
Solution s;
cout << s.longestPalindrome("abcd") << endl;
system("pause");
return 0;
}