Let Code符号化問題2021、06、09—Valid Palindrome


[質問]


Given a string s, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Example 1:
Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama"is a palindrome.
Example 2:
Input: s = "race a car"
Output: false
Explanation: "raceacar"is not a palindrome.
(要約)スペースまたは特殊文字以外の数字またはアルファベットが回文であるかどうかを確認します.(大文字と小文字の区別X)

[回答]

var isPalindrome = function(s) {
  const reg = /[^A-Za-z0-9]/;
  const tempStr = s.split(reg).join('').toLowerCase();

  for(let i = 0, len = tempStr.length; i < Math.floor(len / 2); i++) {
    if(tempStr[i] !== tempStr[len - i - 1]) {
      return false;
    }
  }

  return true;
};
アルファベットと数値ではないことを確認する正規表現を作成し、指定した文字列をsplit()に保持し、アルファベットと数値のみを保持します.
そんな並びを組み合わせて、全部小文字に変えます.
一番前と一番後ろから、互いに比較して、同じ文字かどうかを確認します.