第6题 验证回文串

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

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

    示例1
    输入: "A man, a plan, a canal: Panama"
    输出: true
    示例 2:
    
    输入: "race a car"
    输出: false

思路

首先,去除字符串中的非字母和数字,然后,利用数组将字符串翻转,再和原字符串进行比较,即可得到结果。

详解

  • 将传入的字符串,利用 toLowerCase() 方法统一转化为小写,再利用正则表达式 /[ ^ A-Za-z0-9]/g 在字符串中去除非字母和数字,得到字符串 arr
  • 将字符串 arr 转换为数组,利用数组的方法反转数组,再将数组转为字符串 newArr
  • 将字符串 arr 和 字符串 newArr 进行比较,相等即为回文串,不相等则不为回文串
    /**
     * @param {string} s
     * @return {boolean}
     */
    const isPalindrome = (s) => {
      // 方便比较,统一转化为小写,并去除非字母和数字
      const arr = s.toLowerCase().replace(/[^A-Za-z0-9]/g, '');
      // 将新字符串转换为数组,利用数组的方法获得反转的字符串
      const newArr = arr.split('').reverse().join('');
      // 将2个字符进行比较得出结果
      return arr === newArr;
    };
Last Updated:
Contributors: leeguooooo