最长回文串
**需求:**给一个字符串,获取最长回文子串
示例:
输入:"abbadc"
输出:"bad"
1
2
2
**思路:**中心扩散法
字符串挨个字符遍历过去,左右扩散判断是否是回文数,记录长度和下标
public String longestPalindrome(String s) {
if (s.length()<=1){
return s;
}
int left,right = 0;
int len = 1;
int maxlen = 0;
int maxStart = 0;
for (int i = 0; i < s.length(); i++) {
left = i - 1;
right = i + 1;
while (left >= 0 && s.charAt(left) == s.charAt(i)){
len++;
left--;
}
while (right <= s.length()-1 && s.charAt(right) == s.charAt(i)){
len++;
right++;
}
while (left >= 0 && right <= s.length()-1 && s.charAt(left) == s.charAt(right)){
len += 2;
left--;
right++;
}
if (len > maxlen) {
maxlen = len;
maxStart = left + 1;
}
len = 1;
}
return s.substring(maxStart, maxStart + maxlen);
}
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
27
28
29
30
31
32
33
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
27
28
29
30
31
32
33
上次更新: 2023/12/29 11:32:56