Skip to content

Latest commit

 

History

History
63 lines (51 loc) · 1.13 KB

字符串-125. 验证回文串.md

File metadata and controls

63 lines (51 loc) · 1.13 KB

125. 验证回文串

LeetCode | 125. 验证回文串 | 简单

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

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

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串

示例 2:

输入: "race a car"
输出: false
解释:"raceacar" 不是回文串

数组翻转

var isPalindrome = function (s) {
  return (
    (s = s.replace(/[^A-Za-z0-9]/g, '').toLowerCase()),
    s.split('').reverse().join('') === s
  )
}

双指针

/**
 * 双指针
 * 时间复杂度:O(|s|)
 * 空间复杂度:O(|s|)
 */
var isPalindrome = function (s) {
  let i = 0
  let j = s.length - 1
  while (i < j) {
    while (!check(s[i]) && i < j) {
      i++
    }
    while (!check(s[j]) && i < j) {
      j++
    }
    if (s[i++].toLowerCase() !== s[j--].toLowerCase()) {
      return false
    }
  return true
}

function check(s) {
  return /[A-Za-z0-9]/.test(s)
}