給定一個非空字符串 s,最多刪除一個字符。判斷是否能成爲迴文字符串。
示例 1:
輸入: "aba"
輸出: True
示例 2:
輸入: "abca"
輸出: True
解釋: 你可以刪除c字符。
注意:
字符串只包含從 a-z 的小寫字母。字符串的最大長度是50000。
方法:雙指針分別指向頭尾,遇到不同的分別判斷刪除左右兩邊後剩下的是不是迴文。
class Solution {
public boolean validPalindrome(String s) {
char[] ch = s.toCharArray();
int i = 0, j = ch.length - 1;
while(i < j && ch[i] == ch[j]){
i++;
j--;
}
if(isPalindrome(ch, i + 1, j))
return true;
if(isPalindrome(ch, i, j - 1))
return true;
return false;
}
private boolean isPalindrome(char[] ch, int i, int j){
while(i < j){
if(ch[i++] != ch[j--]){
return false;
}
}
return true;
}
}