剑指 Offer II 018. 有效的回文

145 阅读1分钟

剑指 Offer II 018. 有效的回文

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

本题中,将空字符串定义为有效的 回文串

很简单的一种方法

var isPalindrome = function(s) {
  var len = s.length
  var arr = []
  for(var i=0;i<len;i++){
      if(/[A-Za-z0-9]/.test(s[i])){
          arr.push(s[i].toLowerCase())
      }
  }
  return arr.join('') === arr.reverse().join('')
};

方法二 使用正则

var isPalindrome = function(s) {
    let reg = /[a-zA-Z0-9]/g;
    let str = s.match(reg);
    if (str == null) return true;
    str = str.join('');
    str = str.toLowerCase();
    let temp = str.split('').reverse().join('');
    if (temp == str) {
        return true;
    } else return false;
};

方法三: 双指针

var isPalindrome = function (s) {
  var arr = [];
  for (var i = 0; i < s.length; i++) {
    if (/[A-Za-z0-9]/.test(s[i])) {
      arr.push(s[i].toLowerCase());
    }
  }
  s = arr.join('')
  var left = 0;
  var right = s.length - 1;
  while (left <= right) {
    if (s[left] !== s[right]) {
      return false;
    }
    left++;
    right--;
  }
  return true
};