题目描述:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
解释:”amanaplanacanalpanama” 是回文串示例 2:
输入: “race a car”
输出: false
解释:”raceacar” 不是回文串
方法一:正则双指针
解题思路
\W
匹配,非数字、非字母和非下划线,[\W|_]
,加上下划线- 如果
匹配到
,左指针左移,右指针右移。只要左右指针指到不等的数字或字母,返回false
1 | var isPalindrome = function(s) { |
复杂度分析
- 时间复杂度 O(N)
- 空间复杂度 O(1)
执行结果:通过
执行用时:80 ms, 在所有 JavaScript 提交中击败了82.96%的用户
内存消耗:39.4 MB, 在所有 JavaScript 提交中击败了98.65%的用户
方法二:正则加翻转
1 | var isPalindrome = function(s) { |
执行结果:通过
执行用时:72 ms, 在所有 JavaScript 提交中击败了96.76%的用户
内存消耗:41.4 MB, 在所有 JavaScript 提交中击败了46.61%的用户