给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这道题比较简单
拿到字符串正则替换掉不是字母数字的字符,这里需要注意一个点。
有的小伙伴可能正则直接选用\w
或者\W
,然而以上两个匹配都是包含下划线的,题目要求是只考虑数字和字母。
然后替换之后全部转换为小写。
最后就是比较,既然是回文字符串,那么翻转一下也应该和原字符串相等。
就两句,简单易理解。
这里的双指针写法其实也比较简单,我就不写了。
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
let flag = s.replace(/[^\a-zA-Z0-9]/g, '').toLowerCase();
return flag == flag.split('').reverse().join('');
};
最后一次更新于2020-07-06
6啊
By 苗洪波 at July 7th, 2020 at 01:41 am.