leetcode5_最长回文串

1.题目描述

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。

示例 2:

输入: “cbbd”
输出: “bb”

2.解题分析

首先这里需要利用substring()这个方法

substring() 方法返回字符串的子字符串。

1
public String substring(int beginIndex, int endIndex)

参数

  • beginIndex – 起始索引(包括), 索引从 0 开始。

  • endIndex – 结束索引(不包括)。

首先一个回文数,是分偶数和奇数的。

例如:

偶数:bbcc

奇数:aba

所以我们在这里用到的是中心扩散法,假如回文数是奇数,则以自己为中心两边向外扩散,同时判断新加的两个数是否相等,而偶数就要先判断两边的数字是否相等。

3. 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution4 {
String res="";
public String longestPalindrome(String s) {
if(s==null||s.length()<1){
return "";
}
for(int i=0;i<s.length();i++){
expandAroundCenter(s, i, i);
expandAroundCenter(s, i, i+1);

}
return res;
}

public void expandAroundCenter(String s,int left,int right){
while(left>=0&&right<s.length()&&s.charAt(left)==s.charAt(right)){
left--;
right++;
}
String cur=s.substring(left+1,right);
if(cur.length()>res.length()){
res=cur;
}

}
}
-------------本文结束感谢您的阅读-------------
0%