• 125. 验证回文字符串


    方法一:思维定势,直接想到用栈 (比较蠢 5.09% 与 30.88%)

    var isPalindrome = function(s) {
        s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase()
        
        const stack = [],  len = s.length, half = Math.floor(len / 2)
        for (let i = 0; i < half; i += 1) {
            stack.push(s[i])
        }
    
        for (let i = len - 1; i >= half; i -= 1) {
            if (stack.length && s[i] !== stack.shift()) {
                return false
            }
        }
    
        return true
    };


    方法二:直接比较前半段和后半段字符串 (94.17% 和 45.62%)

    var isPalindrome = function(s) {
        s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase()
        const len = s.length
        if (len % 2 === 0) {
            return s.substring(0, len / 2) === s.substring(len / 2, len).split('').reverse().join('')
        } else {
            return s.substring(0, (len - 1) / 2) === s.substring((len + 1) / 2, len).split('').reverse().join('')
        }
    };

    方法三: 双指针 (94.17% 和 47.66%, 可以提前结束)

    var isPalindrome = function(s) {
        s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase()
        let i = 0, j = s.length - 1
        while (i < j) {
            if (s[i] === s[j]) {
                i += 1
                j -= 1
            } else {
                return false
            }
        }
    
        return true
    };
     
    方法四:在方法三上优化,边遍历边忽略不合法的字符,直接遍历一遍完事
  • 相关阅读:
    引爆点--产品方法论
    智能的差旅预订 竞品分析
    差旅管理
    运营中的用户心理学
    鸡汤
    励志的鸡汤
    cmder安装
    jQuery height() innerHeight() outerHight() width() innerWidth() outerWidth()源码解读
    css未知宽度水平居中整理
    css水平垂直居中块整理
  • 原文地址:https://www.cnblogs.com/rencoo/p/13823997.html
Copyright © 2020-2023  润新知