1. 程式人生 > >Leetcode——驗證迴文字串

Leetcode——驗證迴文字串

題目描述:

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

解題思路

  • 使用雙指標,一個指向頭,一個指向尾,如果兩者不相同了,則可以將尾部的往前挪一個,或者首部的往後挪一個,判斷這兩種情況
  • 這兩種已經相當於刪除了一個字元,如果不是迴文字串,說明刪除一個字元滿足不了要求

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

    }
    public boolean isPalindrome(String s,int i,int j){
        while(i<j){
            if(s.charAt(i++)!=s.charAt(j--))
                return false;
        }
        return true;
    }
}