LeetCode回文数使用JavaScript解题,一种不太正经的解法|前端学算法

简介: LeetCode回文数使用JavaScript解题,一种不太正经的解法|前端学算法

回文数


给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。

示例 1:

输入:x = 121

输出:true

示例 2:

输入:x = -121

输出:false

解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入:x = 10

输出:false

解释:从右向左读, 为 01 。因此它不是一个回文数。


解题思路


简单的来说回文就是第一位与最后一位相等,第二位与倒数第二位相同;这里分两种情况,一种是长度是奇数,从最中间往两边对称相等(除了中间那一位),另一种情况是长度位偶数,两边对称相等。所以我们可以将整数转化为字符串,使用两个指针,一个从最开始,一个从最后面开始对比,等到两个指针相遇时,如果都相等了,那这就是一个回文数

步骤可以转化为:

  • 第一步:将整数转化为字符串newX
  • 第二步:遍历字符串,如果newX[i]不等于newX[newX.length-i-1]则就不是回文数,返回false,如果是,则在判断一下i 是否 >= newX.length-i-1如果是则说明已经遍历完了,则返回true
var isPalindrome = function(x) {
    let newX = String(x)
    for(let i=0;i<newX.length;i++){
        if(newX[i] === newX[newX.length-i-1]){
            if(i >=newX.length-i-1){
                return true
            }
        }else{
            return false
        }
    }
};


image.png


明明是个大佬爷们,非让我扮女装大佬;明明是 回文,把他转化为 “字符串” 是不是不太正经???

数字上的问题,就用数字解决

可以分析出来,当目标数小于0或者只有个位的时候,除了0之外肯定就不是回文数

假设这个数就是回文数,那么它的个位肯定与最高位相同,十位与第二高位相同;用 x % 10可以获取到最高位的数字,进行乘10可以转化为十位或者百位,将它存储为另一个数;而用Math.floor(x/10)就可以截取到回文数的前一部分,进而将这两个数进行比较

var isPalindrome = function(x) {
    if (x < 0 || (x % 10 === 0 && x !== 0)) {
        return false;
    }
    let revertedNumber = 0;
    while (x > revertedNumber) {
        revertedNumber = revertedNumber * 10 + x % 10;
        x = Math.floor(x / 10);
    }
    // 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
    return x === revertedNumber || x === Math.floor(revertedNumber / 10);
};



目录
相关文章
|
14天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
108 2
|
13天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
30 0
|
14天前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
61 41
|
12天前
|
人工智能 自然语言处理 程序员
通义灵码:融合创新玩法与探索,重塑LeetCode解题策略
欢迎来到工程师令狐小哥的频道。本文介绍如何利用AI工具高效刷LeetCode,通过通义灵码插件在IntelliJ IDEA中实现代码生成、优化、单元测试等功能,提升编程学习效率。
50 1
通义灵码:融合创新玩法与探索,重塑LeetCode解题策略
|
21天前
|
算法
LeetCode回文数(暴力解,求更好的思路)
这篇博客讨论了如何判断一个整数是否为回文数,提供了暴力解法的代码,并寻求更优的算法建议。
38 1
LeetCode回文数(暴力解,求更好的思路)
|
9天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
16 3
|
13天前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
20 2
|
16天前
|
JavaScript 前端开发 API
Vue.js:打造高效前端应用的最佳选择
【10月更文挑战第9天】Vue.js:打造高效前端应用的最佳选择
14 2
|
16天前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
2天前
|
前端开发 JavaScript UED
"前端小技巧大揭秘:JS如何将后台时间戳秒变亲切小时前、分钟前,让用户秒懂,提升互动体验!"
【10月更文挑战第23天】在Web开发中,将后台返回的时间戳转换为“小时前”、“分钟前”、“刚刚”等友好的时间描述是常见需求。本文介绍如何用JavaScript实现这一功能,通过计算当前时间和时间戳的差值,返回相应的描述,提升用户体验。
6 0