最长回文子串 力扣 详细注解
LeetCode 5 最长回文子列
拿之前码的测试一下哈, 第一次写博客

思路
- 回文字符串长度为基数和偶数两种情况,回文中心是一个还是两个相同的字符
这是互斥的所以可以做个判断,但无论如何作为中心向两边检测的过程是一样的。
暴力求解即可。
- 为了算法实现的条件判断,可以繁琐,不必考虑反复执行相同的判断(这样方便代码)
class Solution {
public String longestPalindrome(String s) {
char[] str = s.toCharArray();
int[] range = new int[2];
int high=0;
int low=0;
int j=0;
//两个特殊情况
if(s.length()==0||str==null){return "";}
//2. while(i<s.length()-1){ } 记住这个格式,他为机械化重复提供了一个很好的判定条件。只要满足 “存在预留” 循环体即可进行++操作。
while(j<s.length()-1){
//如果连着有相同的,可以把他们一同当做字符串的中心。
while(high<s.length()-1&&str[high]==str[high+1]){high++;}
while(low>0&&high<s.length()-1&&str[high+1]==str[low-1]){high++;low--;}
//update the max value
if((range[1]-range[0])<(high-low)){range[0]=low;range[1]=high;}
high=++j;
low=j;
}
return s.substring(range[0],range[1]+1);
}
}

浙公网安备 33010602011771号