125. Valid Palindrome

125. Valid Palindrome

題目

給出一個字符串,判斷它是否是迴文,只考慮字母和數字(alphanumeric),其他的忽略。

注意:關於本題,我們定義空字符串爲有效迴文。

例1:
輸入: “A man, a plan, a canal: Panama”
輸出: true

例2:
輸入: “race a car”
輸出: false

代碼塊

public class solution {
    public static boolean isPalindrome(String s){
        if(s == null) return true;
        int head = 0, tail = s.length() -1;
        char cHead = s.charAt(head), cTail = s.charAt(tail);
        while(head <= tail){
            if(!Character.isLetterOrDigit(cHead)){
                head++;
            }else if(!Character.isLetterOrDigit(cTail)){
                tail--;
            }else{
                if(Character.toLowerCase(cHead) != Character.toLowerCase(cTail)){
                    return false;

                }
                head++;
                tail--;
            }
        }
        return true;
    }
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        String s = in.nextLine() ;
        System.out.println(isPalindrome(s));
    }
}

代碼分析

本題沒有參考他的,本以爲很簡單,自己試着編一下,但是提交都不對,就去看了看discussion。
存在的主要問題是:不知道字符串的相關調用,不知道使用兩個指針你,還是以數組的思維方式去考慮問題。
本題使用了兩個指針,一個從頭移動,一個從尾移動,只要判斷首尾是否相等即可。
第一:判斷時,只需要考慮字母數字,有個功能可以只識別數字和字母 : Character.isLetterOrDigit()
第二:判斷時,要把它們轉化爲小寫:Character.toLowerCase(cHead)
第三:使用鍵盤讀入字符串時,需要使用Scanner,這個是java自帶的Scanner 類。
nextLine()具有以下特點:
1. 以Enter爲結束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字符。
2. 可以獲得空白。

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