中心扩散, 分成奇偶回文序列两种情况分别遍历

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
34
35
36
class Solution {
/**
* 中心扩散, 分成奇偶回文序列两种情况分别遍历
*/
public String longestPalindrome(String s) {
char[] arr = s.toCharArray();
int len = arr.length;
// 左闭右开
int ansLeft = 0, ansRight = 0;
for (int i = 0; i < len; i++) {
int l = i, r = i;
while (l >= 0 && r < len && arr[l] == arr[r]) {
l--;
r++;
}
if (r - l - 1 > ansRight - ansLeft) {
ansLeft = l + 1;
ansRight = r;
}
}

for (int i = 0; i < len - 1; i++) {
int l = i, r = i+1;
while (l >= 0 && r < len && arr[l] == arr[r]) {
l--;
r++;
}
if (r - l - 1 > ansRight - ansLeft) {
ansLeft = l + 1;
ansRight = r;
}
}

return s.substring(ansLeft, ansRight);
}
}

Comments
Recent Posts
Untitled
Categories
Tags
Website Info
Article Count :
2
Total Word Count :
1.6k
Unique Visitors :
Page Views :
Last Update :