【LeetCode】驗證迴文字符串 Ⅱ

解題思路

從兩端開始往中間遍歷,遇到不是迴文的,就判斷去掉之後是不是迴文,這裏可以去掉左邊的也可以去掉右邊的

代碼

package strings;

public class validPalindrome {

    public static boolean validPalindrome(String s) {
        int length = s.length();
        for(int i = 0; i < length;){
            if(s.charAt(i) == s.charAt(length-i-1)){
                i++;
            }else{
                return isPalindrome(s.substring(i,length-i-1)) || isPalindrome(s.substring(i+1, length-i));
            }
        }

        return true;
    }

    public static boolean isPalindrome(String s){
        int start = 0;
        int end = s.length() - 1;
        while(start <= end){
            if(s.charAt(start++) == s.charAt(end)){
                end--;
            }else{
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        String s = "abca";
        System.out.println(validPalindrome.isPalindrome(s));
        System.out.println(validPalindrome.validPalindrome(s));
    }
}

 

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