📜  回文 javascript (1)

📅  最后修改于: 2023-12-03 15:07:32.687000             🧑  作者: Mango

回文 JavaScript

一个回文是指从前往后读和从后往前读都一样的词、短语或数字。在 JavaScript 中,我们可以使用不同的方法来检查一个字符串或数字是否是回文。

字符串回文
方法一:for 循环

我们可以通过循环遍历字符串的前半部分和后半部分来检查一个字符串是否是回文。具体的步骤如下:

  1. 首先,定义一个变量 len 用于保存字符串的长度,以及一个变量 str,用于存储去除空格后的字符串。
  2. 将字符串转换为小写,并去除其中的空格和标点符号。(如果不去除这些字符的话,将导致判断错误,比如字符串 "A man, a plan, a canal, Panama!")
  3. 使用 for 循环遍历字符串的前半部分,同时使用 len - i - 1 计算出对应的后半部分索引。
  4. 在循环中检查当前位置的字符是否与对应位置的字符相同,如果不同则返回 false。
  5. 如果循环完成都没有返回 false,则说明该字符串是回文,返回 true。
function isPalindrome(str) {
  const len = str.length;
  const s = str.toLowerCase().replace(/[^0-9a-z]/gi, ''); // 删除空格和标点符号
  for (let i = 0; i < len / 2; i++) {
    if (s[i] !== s[len - i - 1]) {
      return false;
    }
  }
  return true;
}
方法二:反转字符串

我们可以将字符串反转后,与原字符串进行比较。如果两个字符串相同,则说明该字符串是回文。具体步骤如下:

  1. 首先,定义一个变量 str,用于存储去除空格后的字符串。
  2. 将字符串转换为小写,并去除其中的空格和标点符号。
  3. 将字符串反转。
  4. 比较反转后的字符串与原字符串是否相同。如果相同,则说明该字符串是回文。
function isPalindrome(str) {
  const s = str.toLowerCase().replace(/[^0-9a-z]/gi, ''); // 删除空格和标点符号
  const reversed = s.split('').reverse().join('');
  return s === reversed;
}
数字回文
方法一:转换为字符串

我们可以将数字转换为字符串,然后使用方法一中的字符串回文检查方法进行判断。

function isPalindrome(num) {
  const str = num.toString();
  return isPalindrome(str);
}
方法二:取反向数字

我们可以通过将数字取模和除法得到它的数位,并将它们按相反的顺序排列起来来实现数字的反转。如果反转后的数字与原数字相同,则说明该数字是回文。

function isPalindrome(num) {
  if (num < 0) {
    return false;
  }
  let reversed = 0;
  let n = num;
  while (n > 0) {
    reversed = reversed * 10 + n % 10;
    n = Math.floor(n / 10);
  }
  return num === reversed;
}
结语

以上就是检查回文的方法,你可以根据自己的实际情况选择合适的方法。如果你有更好的思路或者检查回文的方法,请在评论区留言告诉我们。