leeCode算法--验证是不是回文字符串

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

分析:注意这里的坑。

  • 1.忽略大小写,那么就需要统一字符串中每一个字符,要不都答谢大写,要么都小写;
  • 2.将空字符串作为有效字符串,那么意味着需要将空字符串,标点符号跳过。
    看代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    var isPalindrome = function(s) {
    // 将字符串统一转成小写
    s = s.toLocaleLowerCase()
    let left = 0
    let right = s.length - 1
    let isTrue = false
    // 只考虑数字和字母,如果不是数字和字母,则跳过
    let reg = /^[0-9a-zA-Z]+$/
    while (left <= right) {
    while (!reg.test(s[left]) ||
    !reg.test(s[right])) {
    if (!reg.test(s[left])) {
    left++
    }
    if (!reg.test(s[right])) {
    right--
    }
    }
    isTrue = s[left] === s[right]
    if(isTrue) {
    left++
    right--
    } else {
    isTrue = false
    break
    }
    }
    return isTrue
    };
    isPalindrome('0P') // false
    isPalindrome('A man, a plan, a canal: Panama') // true
    isPalindrome('race a car') // false
    Yes, that’s all!
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信