def longest_palindrome(s):
res=''
def expand(l,r):
while l>=0 and r<len(s) and s[l]==s[r]: l-=1; r+=1
return s[l+1:r]
for i in range(len(s)):
for p in [expand(i,i),expand(i,i+1)]:
if len(p)>len(res): res=p
return res
public String longestPalindrome(String s){
String res="";
for(int i=0;i<s.length();i++){
String odd=expand(s,i,i),even=expand(s,i,i+1);
if(odd.length()>res.length()) res=odd;
if(even.length()>res.length()) res=even;
} return res;
}
String expand(String s,int l,int r){
while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){l--;r++;}
return s.substring(l+1,r);
}
Python nested function. Java helper method. Expand-around-center identical.
def longest_palindrome(s):
res=''
def expand(l,r):
while l>=0 and r<len(s) and s[l]==s[r]: l-=1; r+=1
return s[l+1:r]
for i in range(len(s)):
for p in [expand(i,i),expand(i,i+1)]:
if len(p)>len(res): res=p
return res
public String longestPalindrome(String s){
String res="";
for(int i=0;i<s.length();i++){
String odd=expand(s,i,i),even=expand(s,i,i+1);
if(odd.length()>res.length()) res=odd;
if(even.length()>res.length()) res=even;
} return res;
}
String expand(String s,int l,int r){
while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){l--;r++;}
return s.substring(l+1,r);
}
1. For each center 2. Expand while match 3. Track longest