/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
let dp =[];
let res = {};
let len = s.length;
for(let i=0;i<len;i++){
dp.push([]);
dp[i][i]=true;
res['l'] = i;
res['r'] = i;
}
for(let i=0;i<len;i++){
if(len>1){
dp[i][i+1]=s[i]==s[i+1]?true:false;
if(dp[i][i+1]){
res['l'] = i;
res['r'] = i+1;
}
}
}
for(let size = 3;size<=len;size++){
for(let l=0;l<len;l++){
let r = l+size-1;
if(r>=len){
break;
}
if(s[l]!=s[r]){
dp[l][r]=false;
}else{
dp[l][r] = dp[l+1][r-1]&&(s[l]==s[r]);
}
if(dp[l][r]){
res['l'] = l;
res['r'] = r;
}
}
}
return s.slice(res['l'],res['r']+1);
};