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… 处获得。