Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save luoxiaoxun/5964581 to your computer and use it in GitHub Desktop.
Save luoxiaoxun/5964581 to your computer and use it in GitHub Desktop.
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
C++:
class Solution {
public:
string longestPalindrome(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(s.size()==0) return "";
string ret;
string cur;
for(int i=0;i<s.size();i++){
cur=findPalindrome(s,i-1,i+1);
if(cur.size()>ret.size()) ret=cur;
cur=findPalindrome(s,i,i+1);
if(cur.size()>ret.size()) ret=cur;
}
return ret;
}
string findPalindrome(string s,int left,int right){
if(left<0) return s.substr(left+1,1);
if(right>=s.size()) return s.substr(right-1,1);
while(left>=0&&right<s.size()){
if(s[left]!=s[right]) break;
left--;
right++;
}
left++;
right--;
return s.substr(left,right-left+1);
}
};
Java:
public class Solution {
public String longestPalindrome(String s) {
// Start typing your Java solution below
// DO NOT write main() function
if(s==null||s.length()==0) return s;
String ret="";
String cur="";
for(int i=0;i<s.length();i++){
cur=findPalindrome(s,i-1,i+1);
if(cur.length()>ret.length()) ret=cur;
cur=findPalindrome(s,i,i+1);
if(cur.length()>ret.length()) ret=cur;
}
return ret;
}
public String findPalindrome(String s,int left,int right){
if(left<0) return s.substring(left+1,left+2);
if(right>=s.length()) return s.substring(right-1,right);
while(left>=0&&right<s.length()){
if(s.charAt(left)!=s.charAt(right)) break;
left--;
right++;
}
left++;
right--;
return s.substring(left,right+1);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment