125. 驗證迴文串
給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義爲有效的迴文串。
示例 1:
輸入: “A man, a plan, a canal: Panama”
輸出: true
示例 2:
輸入: “race a car”
輸出: false
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-palindrome
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
信息
- 只考慮字母和數字字符
- 可以忽略字母大小寫
思路
- 將字符串從頭部和尾部各彈出一個元素
- 判斷這兩個元素是否是字母和數字字符
- 是,則判斷是否相等(忽略大小寫)
3.1. 是,則繼續做1-3步
3.2. 否。返回false - 否,繼續做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題解