-
Notifications
You must be signed in to change notification settings - Fork 101
/
Copy pathValidPalindromeII680.java
54 lines (47 loc) · 1.38 KB
/
ValidPalindromeII680.java
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* Given a non-empty string s, you may delete at most one character.
* Judge whether you can make it a palindrome.
*
* Example 1:
* Input: "aba"
* Output: True
*
* Example 2:
* Input: "abca"
* Output: True
*
* Explanation: You could delete the character 'c'.
* Note:
* The string will only contain lowercase characters a-z.
* The maximum length of the string is 50000.
*
*/
public class ValidPalindromeII680 {
public boolean validPalindrome(String s) {
return validPalindrome(s, 0, s.length()-1, false);
}
private boolean validPalindrome(String s, int l, int r, boolean flag) {
while (l < r) {
if (s.charAt(l) == s.charAt(r)) {
l++;
r--;
continue;
}
if (flag) return false;
if (l == r) return true;
return validPalindrome(s, l+1, r, true) || validPalindrome(s, l, r-1, true);
}
return true;
}
// // stackoverflow
// private boolean validPalindrome(String s, int l, int r, boolean flag) {
// if (l >= r) return true;
// if (s.charAt(l) == s.charAt(r)) {
// return validPalindrome(s, l+1, r-1, flag);
// } else if (!flag) {
// return validPalindrome(s, l+1, r, true) || validPalindrome(s, l, r-1, true);
// } else {
// return false;
// }
// }
}