680. Valid Palindrome II

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
class Solution {
public boolean validPalindrome(String s) {
int i = 0, j = s.length() - 1;
while (i < j) {
if (s.charAt(i) != s.charAt(j)) {
// 字符串 s 已经不可能为回文字符串,尝试删除字符
if (isPalindrome(s, i + 1, j) || isPalindrome(s, i, j - 1)) {
return true;
} else {
return false;
}
} else {
i++;
j--;
}
}

return true;
}

private boolean isPalindrome(String s, int i, int j) {
while (i < j) {
if (s.charAt(i) != s.charAt(j)) {
return false;
}
i++;
j--;
}

return true;
}
}

References

680. Valid Palindrome II
剑指 Offer II 019. 最多删除一个字符得到回文