Problem
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.
Solution
class Solution {
public boolean validPalindrome(String s) {
int i = 0, j = s.length()-1;
while (i < j) {
if (s.charAt(i) == s.charAt(j)) {
i++;
j--;
} else break;
}
if (i >= j) return true;
return isPalin(s, i+1, j) || isPalin(s, i, j-1);
}
private boolean isPalin(String s, int i, int j) {
while (i < j) {
if (s.charAt(i) == s.charAt(j)) {
i++;
j--;
} else return false;
}
return true;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。