1. 题目描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
2. 解题思路
这里使用比较暴力的方法,先提取字符串的有效部分,在进行翻转对比。
这里主要说一下使用到的replace()
方法:
replace()
方法是JavaScript中String
的方法,它用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
该方法的语法:stringObject.replace(regexp/substr,replacement)
,两个参数分别代表:
regexp/substr
:必需,规定子字符串或要替换的模式的 RegExp 对象。replacement
:必需,一个字符串值,规定了替换文本或生成替换文本的函数。
在本题中使用:s.replace(/[^A-Za-z0-9]/g,'')
就是把非字母数字替换为空。
3. 代码实现
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
if(s === '') {
return true
}
s = s.replace(/[^A-Za-z0-9]/g,'').toLowerCase()
return s == s.split('').reverse().join('')
};