zoukankan      html  css  js  c++  java
  • leetcode 125.回文字符串

    题目描述:

    给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

    说明:本题中,我们将空字符串定义为有效的回文串。

    示例 1:

    输入: "A man, a plan, a canal: Panama"
    输出: true
    示例 2:

    输入: "race a car"
    输出: false

    解析题目:

    首先明确什么是回文字符串,就是一个字符串的前半部分等于后半部分反转后的结果。比如:abccba就是回文,nmpmnb就不是回文

    思路一:

    用正则提取字母和数字字符,然后反转对比。(字符串转数组,反转数组,数组转字符串)。

    var isPalindrome = function (s) {
            s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase() //转换成字符串
            let news = s.split("").reverse().join("") //字符串转数组,反转数组,数组转字符串
            if(s === news){
                return true
            }else {
                return false
            }
        }

    思路二:

    双指针:

    用正则提取字母和数字字符,然后让第一个指针在最左边,第二个指针在最右边,两个指针同时走,看值是否相等

    var isPalindrome = function(s) {
        s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase() //转换成字符串
            let left = 0;
            let right = s.length-1
            while (left < right) {
                if(s[left] != s[right]){ //如果有一个不相等就停止
                    return false
                }
                left++
                right--
            }
            return true
    };

     

    不积跬步无以至千里
  • 相关阅读:
    部署nginx服务
    mysql主从配置
    LNMP+WordPress博客搭建
    CIFS(Samba)服务的使用
    NFS服务的使用
    LVM逻辑卷
    FTP学习
    文件处理+生成器
    内置函数
    Python3
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12398042.html
Copyright © 2011-2022 走看看