summary:
two pointers
package myapp.kit.leetcode.top145;
/**
*
* 680
* easy
* https://leetcode.com/problems/valid-palindrome-ii/
*
*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.
*
* @author huangdingsheng
* @version 1.0, 2020/6/11
*/
public class ValidPalindromeII {
public static boolean validPalindrome(String s) {
int l = 0;
int r = s.length() - 1;
int l1 = -1;
int r1 = -1;
while (l <= r) {
if (s.charAt(l) == s.charAt(r)) {
l++;
r--;
} else {
l1 = l;
r1 = r;
break;
}
}
if (l1 >= 0) {
return validate(s.substring(l1 + 1, r1 + 1)) || validate(s.substring(l1, r1));
}
return true;
}
private static boolean validate(String s) {
int l = 0;
int r = s.length() - 1;
while (l <= r) {
if (s.charAt(l) == s.charAt(r)) {
l++;
r--;
} else {
return false;
}
}
return true;
}
// "eeccccbebaeeabebccceea""aguokepatgbnvfqmgmlcupuufxoohdfpgjdmysgvhmvffcnqxjjxqncffvmhvgsymdjgpfdhooxfuupuculmgmqfvnbgtapekouga"
public static void main(String[] args) {
System.out.println(validPalindrome("abc"));
}
}