题目:最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
- 1 <= s.length <= 1000
- s 仅由数字和英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-palindromic-substring
思路
方法一:
复杂问题拆分为两个简单问题
1.判断一个字符串是回文串
2.由长到短,遍历一个字符串的所有子串
判断回文是双指针法
由长到短,遍历一个字符串的所有子串:外层循环控制长度,也就是滑动窗口的大小,内层循环的作用是移动滑动窗口。这样就做到了子串是由长到短一 一遍历
class Solution {
public String longestPalindrome(String s) {
String str = "";
char[] chars = s.toCharArray();
for(int i = s.length(); i > 1; i--){
for (int left = 0,right = left+i-1; right<s.length(); left++,right++){
/*System.out.println(s.substring(left,right+1));*/
if (subIsPalindrome(chars, left, right)) {
return s.substring(left, right+1);
}
//System.out.println(s.substring(left,right+1));
}
}
return s.substring(0,1);
}
public boolean subIsPalindrome(char[] chars,int left,int right){
while (left < right){
if (chars[left++] != chars[right--])
return false;
}
return true;
}
}
方法二:之后补充