【LEETCODE】125.驗證迴文串

題目

給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。

分析

使用雙指針的方法遍歷整個字符串,判斷字符串是否是迴文字符串。
幾個要點:
1.Character.isLetterOrDigit()用來判斷當前字符是否是字母和數字字符。
2.Character.toLowerCase()將大寫字母轉化爲小寫字母,再進行比較。

代碼

class Solution {
    public boolean isPalindrome(String s) {
        int left=0, right=s.length()-1;
        while(left<right){
        	//判斷左指針字符是否是字母或數字
            while(left<right&&!Character.isLetterOrDigit(s.charAt(left))){
                ++left;
            }
            //判斷右指針字符是否是字母或數字
            while(left<right&&!Character.isLetterOrDigit(s.charAt(right))){
                --right;
            }
            if(Character.toLowerCase(s.charAt(left))!=Character.toLowerCase(s.charAt(right))){
                return false;
            }
            ++left;
            --right;
        }
        return true;
    }
}

複雜度分析

  1. 時間複雜度:O(n)
  2. 空間複雜度:O(1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章