5. Longest Palindromic Substring
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
Solution:
class Solution {
2
public:
3
string longestPalindrome(string s) {
4
int start, max = 0;
5
for (int i = 0; i < s.length(); i++) {
6
int j = 0;
7
while (i-j >= 0 && i+j < s.length() && s[i-j] == s[i+j]) j++;
8
if (max < 2*j-1) {
9
max = 2*j-1;
10
start = i-j+1;
11
}
12
}
13
for (int i = 0; i < s.length()-1; i++)
14
if (s[i] == s[i+1]) {
15
int j = 0;
16
while (i-j >= 0 && i+1+j < s.length() && s[i-j] == s[i+1+j]) j++;
17
if (max < 2*j) {
18
max = 2*j;
19
start = i-j+1;
20
}
21
}
22
string ans;
23
for (int i = start; i < start+max; i++) ans += s[i];
24
return ans;
25
}
26
};