5. Longest Palindromic Substring
Medium
4031375FavoriteShare
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example 2:
Input: "cbbd" Output: "bb"
Accepted
614,930
Submissions
2,221,846
class Solution {
public:
string longestPalindrome(string s) {
//if(s.length()<1||s==null)return "";
if(s.length()<1)return "";
int left=0,right=0;
for(int i=0;i<s.length();i++){
// cout<<"I"<<i<<endl;
int len1=findM(s,i,i+1);//double
int len2 = findM(s,i,i)-1;
int left1=0,right1=0;
if(len1>len2){
left1=i-len1+1;
right1=i+len1;
}else{
left1=i-len2;
right1=i+len2;
}
if(right1-left1>right-left){
right=right1;
left=left1;
}
//cout<<"i="<<i<<"left="<<left<<" "<<"right="<<right<<endl;
}
return s.substr(left,right-left+1);
}
int findM(string s, int left,int right){
int len=0;
while(left>=0&&right<=s.length()&&s[left]==s[right]){
left--;
right++;
len++;
// cout<<"findM len="<<len<<endl;
}
return len;
}
};