125. 验证回文串|刷题打卡

284 阅读2分钟

125. 验证回文串|刷题打卡

create by db on 2021-3-11 20:10:12
Recently revised in 2021-3-11 20:17:16

闲时要有吃紧的心思,忙时要有悠闲的趣味

原题链接125. 验证回文串 > 目录

题目描述

返回目录

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

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

示例 1:

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

示例 2:

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

思路分析

 说起回文,想到一首回文诗。苏东坡的《菩萨蛮·回文夏闺怨》:

柳庭风静人眠昼,昼眠人静风庭柳。

香汗薄衫凉,凉衫薄汗香。

手红冰碗藕,藕碗冰红手。

郎笑藕丝长,长丝藕笑郎。

思路一:翻转对比

 所谓回文,就是正反一样。只考虑字母和数字且不区分大小写,我们就取出字符串中的有效内容,翻转对比就好。

思路二:双指针对比

 前后两个指针,取出字符串中的有效内容,一一对比。

AC 代码

题解一:翻转对比

/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function (s) {
  let s1 = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase()
  let s2 = s1.split('').reverse().join('')
  return s1 === s2
}

题解二:双指针对比

/**
 * @param {string} s
 * @return {boolean}
 */
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
}

总结

返回目录

 很简单的一道题,柿子先挑软的捏……

 三月你好,春暖花开。加油!

 本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情

后记:Hello 小伙伴们,如果觉得本文还不错,记得点个赞或者给个 star,你们的赞和 star 是我编写更多更丰富文章的动力!GitHub 地址

文档协议

知识共享许可协议
db 的文档库db 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于github.com/danygitgit上的作品创作。
本许可协议授权之外的使用权限可以从 creativecommons.org/licenses/by… 处获得。