leetcode 125 Vaild Palindrome

驗證是否爲迴文

題目要求:給出一個字符串,驗證其是否爲迴文(忽略非字母字符並忽略大小寫)

tags:String, Two Pointer

一般驗證是否爲迴文使用two pointer,比較頭尾指針是否相同,做該題時還需要忽略非字母字符,並將字符都轉換爲小寫(或大寫)再進行比較。

public boolean isPalindrome(String s) {
        int head=0;
        int tail=s.length()-1;
        while(head<tail){
        	char h = Character.toLowerCase(s.charAt(head));
        	char t = Character.toLowerCase(s.charAt(tail));
        	if(!Character.isLetter(h)&&!Character.isDigit(h)){
        		head++;
        		continue;
        	}
        	if(!Character.isLetter(t)&&!Character.isDigit(t)){
        		tail--;
        		continue;
        	}
        	if(h!=t){
        		return false;
        	}
        	tail--;
        	head++;
        }
<span style="white-space:pre">	</span>return true;
}

還有另一種取巧的辦法:使用正則表達式,去掉其中非字幕的字符,並將字符串全部轉爲小寫(或大寫),再翻轉,比較兩個字符串是否相同。這些都可以用java自帶的函數來解決。

public boolean isPalindrome2(String s) {
<span style="white-space:pre">	</span>String actual = s.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
        String rev = new StringBuffer(actual).reverse().toString();
        return actual.equals(rev);
}


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