1. 题目描述

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

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

示例 1:

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

示例 2:

  1. 输入: "race a car"
  2. 输出: false

2. 解题思路

这里使用比较暴力的方法,先提取字符串的有效部分,在进行翻转对比。

这里主要说一下使用到的replace()方法:

replace() 方法是JavaScript中String的方法,它用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

该方法的语法:stringObject.replace(regexp/substr,replacement),两个参数分别代表:

  • regexp/substr:必需,规定子字符串或要替换的模式的 RegExp 对象。
  • replacement :必需,一个字符串值,规定了替换文本或生成替换文本的函数。

在本题中使用:s.replace(/[^A-Za-z0-9]/g,'') 就是把非字母数字替换为空。

3. 代码实现

  1. /**
  2. * @param {string} s
  3. * @return {boolean}
  4. */
  5. var isPalindrome = function(s) {
  6. if(s === '') {
  7. return true
  8. }
  9. s = s.replace(/[^A-Za-z0-9]/g,'').toLowerCase()
  10. return s == s.split('').reverse().join('')
  11. };

4. 提交结果

125. 验证回文串 - 图1