Two pointers.
class Solution {
public boolean validPalindrome(String s) {
// Write your code here
int i = 0;
int j = s.length() - 1;
while (i < j) {
if (s.charAt(i) != s.charAt(j)) {
return validPalindrome(s, i + 1, j) || validPalindrome(s, i, j - 1);
} else {
i++;
j--;
}
}
return true;
}
private boolean validPalindrome(String s, int i, int j) {
if (i >= j) {
return true;
}
while (i < j) {
if (s.charAt(i) != s.charAt(j)) {
return false;
} else {
i++;
j--;
}
}
return true;
}
}