LeetCode:每日一题(2020.4.13)
回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 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<len/2; i++){if(x[i] !== x[len-1-i]){flag = false;break}}return flag;
};
console.log(isPalindrome(101));
运行结果:
LeetCode:每日一题(2020.4.13)相关推荐
- Leetcode每日一题2020.11.13第328题:奇偶链表
328.奇偶链表 题目描述 思路.算法及代码实现 方法:分离节点后合并 如果链表为空,则直接返回链表. 对于原始链表,每个节点都是奇数节点或偶数节点.头节点是奇数节点,头节点的后一个节点是偶数节点,相 ...
- Leetcode每日一题——思路小记
文章目录 LeetCode每日一题 golang T15 2020.6.12 三数之和,双指针的运用 T70 2020.6.13 斐波那契数列 T1014 2020.6.17 最佳观光:双指针,计算公 ...
- LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述
LeetCode 每日一题 42. 接雨水 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,一起加油吧~ 难度 困难 2020.04.04每日一题 ...
- LeetCode每日一题——1235. 规划兼职工作
LeetCode每日一题系列 题目:1235. 规划兼职工作 难度:困难 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 你打算利用空闲时间来做兼职工作赚些零花钱. 这里有 n ...
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- 电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场
电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场 静止点电荷 具有均匀线密度的静止电荷产生的电场 具有均匀面密度的静止电荷产生的电场 用Fourier变换法计算电场 ...
- Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)
思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...
最新文章
- 深入浅出 Redis client/server交互流程
- 百度启动高管退休计划,总裁张亚勤今年十月退休
- C++ Primer 第9章 顺序容器 第一次学习笔记
- Ubuntu: 为firefox安装flash插件
- 华北科技学院计算机系综合性实验,华北科技学院计算机系综合性实验.doc
- opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧
- 威纶通触摸屏与mysql_威纶触摸屏应用实例 以及威纶通触摸屏配方组合
- 国内外大厂集结,远程办公大考成绩单发布!
- 开源 免费 java CMS - FreeCMS1.5 标签 ajaxStore
- SyntaxError: Non-ASCII character ‘\xe4‘ in file baseline.py on line 18, but no encoding declared;
- LINUX下载编译sqlite-jdbc(支持mips64el/loongarch64的jar包下载)
- ulipad.4.1.zip linux,在ubuntu中安装ulipad
- PPT设计制作与美化
- 小学生计算机画图熊猫,小学数学画图技能标准,小学数学示意图几种
- 微信扫码支付开发流程
- 免费的caj转word批量转换方法
- JAVA对接语音验证码接口API
- 【2020年高被引学者】 朱松纯 北京大学
- DAO、DTO、PO、POJO、BO、VO、AO基本概念
- 设置CRT使用Console连接网络设备