给你一个字符串
s
,找到s
中最长的回文子串。
回文数定义: 如:上海自来水来自海上
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数
设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。
思路:
利用到StringBuilder的reserve()方法,双重fori循环得到所有的回文子串,得到结果。但是效率太低。
public String longestPalindrome(String s){
int max_len = 0, len=s.length();
StringBuilder max_s = new StringBuilder();
for(int i=0;i<len;i++){
for(int j=i;j<=len;j++){
StringBuilder sub = new StringBuilder(s.substring(i,j));
if(s.substring(i,j).contentEquals(sub.reverse())){
if(sub.length()>max_len){
max_len = sub.length();
max_s = sub;
}
}
}
}
return max_s.toString();
}