leetcode 680. 驗證迴文字符串 Ⅱ

給定一個非空字符串 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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章