链接:https://leetcode-cn.com/problems/valid-palindrome

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。 :::info 输入: s = “A man, a plan, a canal: Panama”
输出:true
解释:”amanaplanacanalpanama” 是回文串。 :::

思路

先将字符串中的非字母数字字符移除,并将大写字母进行小写后,利用双指针分别指向字符串首尾。左右指针指向元素进行比较,如果相同则指针移动,否则直接返回false.

  1. var isPalindrome = function(s) {
  2. s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase();
  3. let i = 0;
  4. let j = s.length - 1;
  5. while (i < j) {
  6. if (s[i] !== s[j]) return false;
  7. i++;
  8. j--;
  9. }
  10. return true;
  11. };