LeetCode之验证回文串——JavaScript实现

题目:

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;
};

你可能感兴趣的:(LeetCode之验证回文串——JavaScript实现)