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

     

    不积跬步无以至千里
  • 相关阅读:
    python 协程
    python 进程池的使用
    python 多进程数据交互及共享
    python 多进程
    技术博客与技术日记
    理解闭包
    jWriter一个基于jQuery的阅读写作网站的效果库
    ubuntu下phpmyadmin配置问题解决
    避免明文保存用户密码
    如何用css实现类似简书的纵向导航/竖排导航
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12398042.html
Copyright © 2011-2022 走看看