当前位置:首页 > JavaScript

js回文算法实现

2026-04-07 10:22:56JavaScript

回文算法实现

回文是指正读和反读都相同的字符串或数字。以下是几种在JavaScript中实现回文检测的方法。

方法1:使用字符串反转

将字符串反转后与原字符串比较,如果相同则为回文。

js回文算法实现

function isPalindrome(str) {
    const reversedStr = str.split('').reverse().join('');
    return str === reversedStr;
}

// 示例
console.log(isPalindrome('madam')); // true
console.log(isPalindrome('hello')); // false

方法2:使用循环比较字符

通过循环比较字符串的首尾字符,逐步向中间靠拢。

function isPalindrome(str) {
    const len = str.length;
    for (let i = 0; i < len / 2; i++) {
        if (str[i] !== str[len - 1 - i]) {
            return false;
        }
    }
    return true;
}

// 示例
console.log(isPalindrome('racecar')); // true
console.log(isPalindrome('world')); // false

方法3:使用递归

递归地比较字符串的首尾字符,直到字符串长度为1或0。

js回文算法实现

function isPalindrome(str) {
    if (str.length <= 1) return true;
    if (str[0] !== str[str.length - 1]) return false;
    return isPalindrome(str.slice(1, -1));
}

// 示例
console.log(isPalindrome('level')); // true
console.log(isPalindrome('apple')); // false

方法4:忽略大小写和非字母字符

处理包含大小写和非字母字符的字符串时,可以先将字符串转换为统一格式。

function isPalindrome(str) {
    const cleanedStr = str.toLowerCase().replace(/[^a-z0-9]/g, '');
    const reversedStr = cleanedStr.split('').reverse().join('');
    return cleanedStr === reversedStr;
}

// 示例
console.log(isPalindrome('A man, a plan, a canal: Panama')); // true
console.log(isPalindrome('No lemon, no melon')); // true

方法5:数字回文检测

检测数字是否为回文,可以将其转换为字符串后使用上述方法,或直接通过数学运算实现。

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

// 示例
console.log(isPalindromeNumber(121)); // true
console.log(isPalindromeNumber(123)); // false

注意事项

  • 字符串方法适用于任意字符组成的字符串,但可能需要处理大小写和特殊字符。
  • 数字方法直接操作数字,避免转换为字符串的开销。
  • 递归方法简洁但可能因调用栈过深导致性能问题,适合短字符串。

标签: 回文算法
分享给朋友:

相关文章

js实现贪心算法

js实现贪心算法

贪心算法简介 贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。贪心算法常用于解决优化问题,如最短路径、最小生成树等。 贪心算法的基本步骤 贪心算…

js实现24点算法

js实现24点算法

24点算法简介 24点游戏的目标是通过加、减、乘、除四则运算,将4个数字组合成结果为24的表达式。以下是基于JavaScript的实现方法。 基本思路 排列组合:生成所有可能的数字排列顺序。 运算符…

js实现算法

js实现算法

JavaScript 实现常见算法的方法 排序算法 快速排序的实现: function quickSort(arr) { if (arr.length <= 1) return arr;…

实现回文js

实现回文js

判断字符串是否为回文 使用字符串反转后与原字符串比较的方法: function isPalindrome(str) { const reversedStr = str.split('').rev…

js实现回文

js实现回文

判断字符串是否为回文 回文是指正读和反读都相同的字符串。以下是几种在JavaScript中判断字符串是否为回文的方法。 方法一:使用数组反转 将字符串转换为数组,反转后再合并为字符串与原字符串比较。…

js实现冒泡算法

js实现冒泡算法

冒泡排序算法实现 冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换顺序错误的元素,直到整个数组有序。 基本实现 function bubbleSort(arr) { let l…