125. 驗證迴文串

125. 驗證迴文串

給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義爲有效的迴文串。
示例 1:
輸入: “A man, a plan, a canal: Panama”
輸出: true
示例 2:
輸入: “race a car”
輸出: false
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-palindrome
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

信息

  • 只考慮字母和數字字符
  • 可以忽略字母大小寫

思路

  1. 將字符串從頭部和尾部各彈出一個元素
  2. 判斷這兩個元素是否是字母和數字字符
  3. 是,則判斷是否相等(忽略大小寫)
     3.1. 是,則繼續做1-3步
     3.2. 否。返回false
  4. 否,繼續做1-3步

API

截取字符串的方法有三種:
slice(start,end):
 該方法可通過以上參數,提取字符串的某個部分,並以新的字符串返回被提取的部分,若爲負數,則從尾部開始算。但是返回值爲切割後的字符串,不符合這道題
substring(start,end):
 該方法可通過以上參數,提取字符串中介於兩個指定下標之間的字符串,返回值正確,且對原字符串沒影響,可以用到這道題中,start與end爲非負數
substr(start,length):
 該方法是返回從指定位置開始的指定長度的子字符串,也可以用到這道題中,start爲負時,會被替換爲0,length不指定,則會延續到字符串末尾。

var isPalindrome = function(s) {
    var Regexp=/^[\da-zA-Z]$/;
    for(let i=0,j=s.length-1;i<j;){
        let left=s.substr(i,1);
        let right=s.substr(j,1);
        if(Regexp.test(left)){
            i++;
            continue;
        }
        if(Regexp.test(right)){
            j--;
            continue;
        }
        if(left.toUpperCase()===right.toUpperCase()){
            continue;
        }else{
            return false;
        }
    }
    return true;
};

leetCode分類刷題   該地址長期、每週更新LeetCode分類刷題

參考資料
  leetcode題解

發佈了23 篇原創文章 · 獲贊 4 · 訪問量 805
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章