首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >验证回文串

验证回文串

作者头像
用户4456933
发布2021-06-01 15:04:52
发布2021-06-01 15:04:52
41400
代码可运行
举报
运行总次数:0
代码可运行

难度:简单 来源:125. 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。回文串就是从左往右和从右往左的每个字符都是一样的。说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

代码语言:javascript
代码运行次数:0
运行
复制
输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

代码语言:javascript
代码运行次数:0
运行
复制
输入: "race a car"
输出: false

思路:

  • 首先需要判空,因为空字符串也是回文,所以如果为空直接返回 true;
  • 然后是需要将字符串不区分大小写,所以需要全部转成小写或者大小;
  • 把得到的字符串转成数组,然后过滤出字母和数字;
  • 最后遍历新数组,使用双指针获取头尾字符判断是否相等,不相等直接返回 false,否则遍历结束则表明它是回文串;
  • 需要注意的是:遍历的时候结束条件是 left < right,这样会比 left <= right 减少一次比较。

题解:

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
    if (!s) return true
    let arr = [...s.toLowerCase()].filter(
        item => 'a' <= item && item <= 'z' 
        || '0' <= item && item <= '9')

    let left = 0, right = arr.length - 1
    while(left <= right) {
        if ( arr[left] !== arr[right]) {
            return false
        }
        left++
        right--
    }   
    return true 
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大海我来了 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档