给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
通过中心拓展法,不过自己打代码的时候虽然有参考但是还是犯了不少小错误,比如最后m-n的错就卡了我半天,以后的变量取名最好还是用首字母等便于纠错
class Solution {
public String longestPalindrome(String s) {
if(s==null||s.length()<1) return"";
int tou=0,wei=0;
for(int i=0;i<s.length();i++)
{int len1=huiweishu(s,i,i);
int len2=huiweishu(s,i,i+1);
int a=Math.max(len1,len2);
if(a>wei-tou)
{ tou=i-(a-1)/2;
wei=i+a/2;
}
}return s.substring(tou,wei+1);
}
private int huiweishu(String s,int a,int b)
{int m=a;int n=b;
while(m>=0&&n<s.length()&&s.charAt(m)==s.charAt(n))
{m--;
n++;
}return n-m-1;
}
}