题目:对于给定字符串S,求出S的最长回文子串。S的长度不超过1000,而且保证存在唯一的最长回文子串。

题解:今天的题解有两篇文章里讲得非常好了已经,就不多说了。按顺序,看这里,看这里

++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
private:
string subPalindrome(string s, int l, int r){
int len = s.length();
while(l>=0 && r <= len && s[l] == s[r]){
l--; r++;
}
l++;r--;
return s.substr(l,r-l+1);
}
public:
string longestPalindrome(string s) {
int len = s.length();
if(len == 0) return "";
string longestPal = s.substr(0, 1);
for(int i = 0; i < len; i++){
string tmp = subPalindrome(s, i, i);
if(tmp.length() > longestPal.length()){
longestPal = tmp;
}
if(s[i] == s[i+1]){
tmp = subPalindrome(s, i, i+1);
if(tmp.length() > longestPal.length()){
longestPal = tmp;
}
}
}
return longestPal;
}
};

carolz比较懒,当然么写最优的解法╮(╯▽╰)╭