680. Valid Palindrome II
Given a string s, return true if the s can be palindrome after deleting at most one character from it.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Example 1:
Input: s = "aba"
Output: true
Example 2:
Input: s = "abca"
Output: true
Explanation: You could delete the character 'c'.
Example 3:
Input: s = "abc"
Output: false
|
Constraints:
- 1 <= s.length <= 105
- s consists of lowercase English letters.
Solution#
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
| class Solution {
public boolean validPalindrome(String s) {
return palindrom(s, 0);
}
boolean palindrom(String s, int count) {
int i = 0;
int n = s.length();
while (i < n / 2) {
char c1 = s.charAt(i);
char c2 = s.charAt(n - i - 1);
if (c1 == c2) {
i++;
continue;
} else {
if (count == 0) {
StringBuilder sb1 = new StringBuilder(s);
sb1.deleteCharAt(i);
boolean res1 = palindrom(sb1.toString(), 1);
if (res1) return true;
StringBuilder sb2 = new StringBuilder(s);
sb2.deleteCharAt(n - i - 1);
return palindrom(sb2.toString(), 1);
}
return false;
}
}
return true;
}
}
|
Solution 2021-11-21#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| class Solution {
public boolean validPalindrome(String s) {
return validatePalindrom(s, 1, 0, s.length() - 1);
}
boolean validatePalindrom(String s, int deleted, int lo, int hi) {
while (lo < hi) {
if (s.charAt(lo) == s.charAt(hi)) {
lo++;
hi--;
} else {
if (deleted == 0) {
return false;
}
return
validatePalindrom(s, 0, lo + 1, hi) || validatePalindrom(s, 0, lo, hi - 1);
}
}
return true;
}
}
|
Solution 2022-01-22#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| class Solution {
public boolean validPalindrome(String s) {
char[] symbols = s.toCharArray();
return validPalindrome(symbols, 0, s.length() - 1, 1);
}
boolean validPalindrome(char[] symbols, int i, int j, int count) {
while (i < j) {
if (symbols[i] == symbols[j]) {
i++;
j--;
continue;
} else {
if (count > 0) {
return validPalindrome(symbols, i, j - 1, 0) || validPalindrome(symbols, i + 1, j, 0);
} else {
return false;
}
}
}
return true;
}
}
|