给定一个字符串 s
,找到 s
中最长的回文子串。你可以假设 s
的最大长度为 1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd" 输出: "bb"
package leetCode_4_30;
/**
* @author : caoguotao
* @date 创建时间:2019年4月30日 下午9:10:50
* @version 1.0
* @parameter
* @since
* @return
*/
public class Solution5 {
private static int maxLen;
private static int start;
public static void main(String[] args) {
String str ="babad";
String s = longestPalindrome(str);
System.out.println(s);
}
public static String longestPalindrome(String s) {
if(s.length() < 2)
return s;
for(int i = 0; i < s.length(); i++) {
extendPalinfrome(s, i, i);
extendPalinfrome(s, i, i + 1);
}
return s.substring(start, start + maxLen);
}
private static void extendPalinfrome(String s, int i, int j) {
while(i >= 0 && j <= s.length() - 1 && s.charAt(i) == s.charAt(j)) {
i--;
j++;
}
if(j - i - 1 >= maxLen) {
maxLen = j - i - 1;
start = i + 1;
}
}
}