美文网首页
LeetCode之验证回文串——JavaScript实现

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

作者: 极奏 | 来源:发表于2019-07-16 20:36 被阅读0次

    题目:

    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实现

          本文链接:https://www.haomeiwen.com/subject/nclahctx.html