题目链接:https://leetcode.cn/problems/longest-palindromic-substring/description/?envType=study-plan-v2&envId=top-100-liked
常见的三种做法分别是动态规划,马拉车和中心扩散。
我们分奇偶串进行中心扩散就能找到最长的回文串啦。
每次进入循环,指针设置一下两边扩散的地点。奇偶指针设置区分一下就行。
class Solution {
public String longestPalindrome(String s) {
String str = s.substring(0,1);
int ans = 1;
for(int i = 1; i<s.length()-1;i++){
int p = i-1;
int q = i+1;
while(p>=0&&q<=s.length()-1){
if(s.charAt(p)==s.charAt(q)){
if(q-p+1>ans){
ans =q-p+1;
str = s.substring(p,q+1);
}
p--;
q++;
}
else break;
}
}
for(int i = 0; i<s.length()-1;i++){
int p = i;
int q = i+1;
while(p>=0&&q<=s.length()-1){
if(s.charAt(p)==s.charAt(q)){
if(q-p+1>ans){
ans = q-p+1;
str = s.substring(p,q+1);
}
p--;
q++;
}
else break;
}
}
return str;
}
}