LeetCode_680驗證迴文字符串Ⅱ

題目描述:

給定一個非空字符串 s最多刪除一個字符。判斷是否能成爲迴文字符串。

示例 1:

輸入: "aba" 輸出: True

示例 2:

輸入: "abca" 
輸出: True 
解釋: 你可以刪除c字符。

注意:

  1. 字符串只包含從 a-z 的小寫字母。字符串的最大長度是50000。

思路:

可以刪除一個字符,判斷是否能構成迴文字符串,左右各刪除一個進行判斷,只有當兩邊都是迴文字符串的時候纔可以。

代碼:

class Solution {
    public boolean validPalindrome(String s) {
          int i = 0;
        int j = s.length() - 1;
        while (i < j) {
           
            if (s.charAt(i) != s.charAt(j)) {
                return isPalindrome(s, i, j - 1) || isPalindrome(s, i + 1, j);
            }
             i++;
            j--;
        }
        return true;
    }
    
     private static boolean isPalindrome(String s, int i, int j) {
        while (i < j) {
            if (s.charAt(i++) != s.charAt(j--)) {
                return false;
            }
        }
        return true;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章