当前位置:首页 > JavaScript

js实现回文

2026-02-01 23:01:36JavaScript

判断字符串是否为回文

回文是指正读和反读都相同的字符串。以下是几种在JavaScript中判断字符串是否为回文的方法。

方法一:使用数组反转

将字符串转换为数组,反转后再合并为字符串与原字符串比较。

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

console.log(isPalindrome("madam")); // true
console.log(isPalindrome("hello")); // false

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

通过循环逐个比较字符串的首尾字符。

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

console.log(isPalindrome("racecar")); // true
console.log(isPalindrome("world")); // false

方法三:使用递归

递归比较首尾字符,逐步缩小字符串范围。

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("test")); // false

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

处理包含大小写或特殊字符的字符串时,可以先标准化。

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

console.log(isPalindrome("A man, a plan, a canal: Panama")); // true
console.log(isPalindrome("No 'x' in Nixon")); // true

性能优化

对于长字符串,方法二(循环比较)通常性能最优,因为它可以提前终止比较。方法一和方法三可能因反转或递归开销较大。

js实现回文

应用场景

  • 方法一适合简单字符串且代码简洁的场景。
  • 方法二适合对性能要求较高的场景。
  • 方法三适合理解递归概念的练习。
  • 方法四适合处理实际输入中的复杂情况。

标签: 回文js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现复制功能实现

js实现复制功能实现

使用document.execCommand方法(传统方式,已逐渐被弃用) 传统方式通过document.execCommand('copy')实现复制功能,需先选中文本。以下是一个完整示例: fu…

js尚未实现

js尚未实现

JavaScript 尚未实现的功能 JavaScript 作为一门不断发展的语言,仍有一些功能尚未被原生支持或标准化。以下是一些常见的尚未实现的功能或特性: Promise.any() 的替代方案…

js实现放大缩小

js实现放大缩小

使用 CSS transform 实现缩放 通过修改元素的 transform 属性实现平滑缩放效果。CSS 的 scale() 函数可以轻松调整元素大小。 const element = docu…

js实现vue组件

js实现vue组件

使用原生JavaScript实现类似Vue的组件功能 基础组件结构 创建一个简单的组件系统需要实现数据绑定、模板渲染和事件处理。以下是一个基础实现框架: class Component { co…