题目:
125. 验证回文串
描述:
- 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
- 说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例2:
输入: "race a car"
输出: false
题解
我的想法:
- 先用正则把数字和字母提取出来。
- 转换成小写
- 字符串开头和结尾依次遍历进行比较。
需要注意的项:
toLocalLowerCase()和toLowerCase()方法的选择
toLocalLowerCase()
toLocaleLowerCase()
方法返回调用该方法的字符串被转换成小写之后的值,转换规则根据任何本地化特定的大小写映射。toLocaleLowerCase()
并不会影响字符串自身的值。在大多数情况下,该方法产生的结果和调用toLowerCase()
的结果相同,但是在某些本地环境中,比如土耳其语,它的大小写映射并不遵循在Unicode中的默认的大小写映射,因此会有一个不同的结果。
代码实现
const isPalindrome = function (str) {
let s = str.replace(/[^a-z0-9]+/ig, '').toLocaleLowerCase()
const length = s.length / 2
for (let i = 0, j = s.length - 1; i < length; i++ , j--) {
if(s[i] !== s[j]){
return false
}
}
return true
}
LeetCode别人的解法:
思路:
- 用正则提取出数字和字母
- 转换成小写
- 将字符串颠倒,直接比较
代码实现
var isPalindrome = function(s) {
s = s.replace(/[^0-9a-zA-Z]/g, "").toLocaleLowerCase();
let reverse = s
.split("")
.reverse()
.join("");
return s === reverse;
};
网友评论