0680. Valid Palindrome II
https://leetcode.com/problems/valid-palindrome-ii
Description
Given a string s
, return true
if the s
can be palindrome after deleting at most one character from it.
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.
ac
class Solution {
public boolean validPalindrome(String s) {
// edge case
if (s == null || s.length() == 0) return false;
int l = 0, r = s.length()-1;
while (l < r) {
if (s.charAt(l) != s.charAt(r)) {
return validate(s, l, r-1) || validate(s, l+1, r);
}
l++;
r--;
}
return true;
}
private boolean validate(String s, int l, int r) {
// exit
if (l > r) return false;
if (l == r) return true;
while (l < r) {
if (s.charAt(l) != s.charAt(r)) return false;
l++;
r--;
}
return true;
}
}
Last updated
Was this helpful?