LeetCode:每日一题(2020.4.13)
发布日期:2021-06-30 15:46:04
浏览次数:2
分类:技术文章
本文共 1740 字,大约阅读时间需要 5 分钟。
回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
解答
一、暴力法
思路:先将整数反转,然后判断。
let isPalindrome = function(x) { if (x<0){ return false; } else{ let result = 0,y=x; while(x!==0){ result = result*10 + x%10; x = Math.floor(x/10); } return y===result; }};console.log(isPalindrome(103));
运行结果:
二、暴力法优化
思路:因为判断是否是回文,所以判断一般的数字即可。
奇怪的是,这样的效率还不如判断全部。
let isPalindrome = function(x) { if(x < 0 || (x % 10 === 0 && x !== 0)) { return false; } else{ let result = 0; while(x>result){ result = result*10 + x%10; x = Math.floor(x/10); } return x===result || x===Math.floor(result/10); }};console.log(isPalindrome(103));
运行结果:
三、转换法
思路:首先将整数转换为字符串数组,然后利用JavaScript中数组自带的reverse()反转函数将数组翻转,然后利用join将字符串数组再变为整数。
let isPalindrome = function(x) { return x===Number(String(x).split('').reverse().join(''));};console.log(isPalindrome(101));
运行结果:
四、双指针法
思路:首先将数字转换为字符串,然后从字符串开头和结尾各发起一个指针,判断是否相同,同时移动两个指针直到两个指针相遇。
const isPalindrome = (x) => { if (x < 0) { return false } const str = x.toString(); let i = 0; let j = str.length - 1; let flag = true; while (i < j) { if (str[i] !== str[j]) { flag = false; break } i++; j-- } return flag};console.log(isPalindrome(101));
运行结果:
四、双指针法优化
思路:不使用指针,直接利用i进行判断。
const isPalindrome = (x) => { if(x<0) return false; let flag = true; x = x.toString(); for(let i=0, len=x.length; i
运行结果:
转载地址:https://kaisarh.blog.csdn.net/article/details/105480758 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月22日 15时35分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C# 写pdf文件(写入表格)
2019-05-01
用while和for循环分别计算100以内奇数和偶数的和,并输出。(Java)
2019-05-01
用while和for循环输出1-1000之间能被5整除的数,且每行输出3个。(Java)
2019-05-01
使用循环分别实现将10进值整数和小数变成二进制数(Java)
2019-05-01
打印矩形(Java)
2019-05-01
打印平行四边形(Java)
2019-05-01
打印等腰三角形(Java)
2019-05-01
打印菱形(Java)
2019-05-01
百钱买百鸡(Java)
2019-05-01
打印乘法口诀表(Java)
2019-05-01
分类算法-KNN
2019-05-01
JVM内存管理
2019-05-01
JVM类加载机制
2019-05-01
JVM之OOM分析
2019-05-01
JVM之字节码如何在jvm流转
2019-05-01
深入剖析JVM垃圾回收-上
2019-05-01
深入剖析JVM垃圾回收-下
2019-05-01
JVM-G1垃圾收集器
2019-05-01
JVM优化-CMS下高并发案例
2019-05-01
机器学习-评价分类、回归算法模型指标
2019-05-01