https://leetcode-cn.com/problems/valid-palindrome/
点击查看【bilibili】

题目

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。

示例

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

解答

image.png

  1. 用正则表达式去掉非数字和字母
  2. 如果字符串长度小于2,返回rue
  3. 定义两个指针,一个在字符串开头,一个在字符串结尾
  4. 建立一个while循环,当left<righ时执行循环,

如果在任意地点s[left] !== s[right]. return false
否则left++, right— 继续执行循环。

  1. 当循环完成后都没有 return false, 则 return true

    答案

    1. var isPalindrome = function(s) {
    2. s = s.toLocaleLowerCase().replace(/[\W_]/g, "")
    3. if(s.length < 2) return true
    4. let left = 0;
    5. let right = s.length -1;
    6. while(left < right) {
    7. if(s[left] !== s[right]) {
    8. return false
    9. }
    10. left++
    11. right--
    12. }
    13. return true
    14. };