1. 程式人生 > >LeetCode-125. 驗證迴文串

LeetCode-125. 驗證迴文串

題目

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

**說明:**本題中,我們將空字串定義為有效的迴文串。

示例 1:

輸入: "A man, a plan, a canal: Panama"
輸出: true

示例 2:

輸入: "race a car"
輸出: false

解題

  • 典型的雙指標問題, 程式碼如下:
class Solution {
    public boolean isPalindrome(String s) {
      if (null == s || "".equals
(s)) { return true; } char[] chars = s.toLowerCase().toCharArray(); int left = 0, right = chars.length - 1; // left == right的情況, 表示除了最中間的一個字元之外, 其他的滿足迴文串情況 while(left<right){ if (!isNumOrChar(chars[left])) { left++; continue; }
if (!isNumOrChar(chars[right])) { right--; continue; } if (chars[left] == chars[right]) { left++; right--; } else { return false; } } return true; } // 判斷字串是否為數字和字母 private
boolean isNumOrChar(char c){ if(c >= '0' && c <= '9'){ return true; } if(c >= 'a' && c <= 'z'){ return true; } return false; } }