回文数

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

示例 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)相关推荐

  1. Leetcode每日一题2020.11.13第328题:奇偶链表

    328.奇偶链表 题目描述 思路.算法及代码实现 方法:分离节点后合并 如果链表为空,则直接返回链表. 对于原始链表,每个节点都是奇数节点或偶数节点.头节点是奇数节点,头节点的后一个节点是偶数节点,相 ...

  2. Leetcode每日一题——思路小记

    文章目录 LeetCode每日一题 golang T15 2020.6.12 三数之和,双指针的运用 T70 2020.6.13 斐波那契数列 T1014 2020.6.17 最佳观光:双指针,计算公 ...

  3. LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述

    LeetCode 每日一题 42. 接雨水 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,一起加油吧~ 难度 困难 2020.04.04每日一题 ...

  4. LeetCode每日一题——1235. 规划兼职工作

    LeetCode每日一题系列 题目:1235. 规划兼职工作 难度:困难 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 你打算利用空闲时间来做兼职工作赚些零花钱. 这里有 n ...

  5. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  6. 电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场

    电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场 静止点电荷 具有均匀线密度的静止电荷产生的电场 具有均匀面密度的静止电荷产生的电场 用Fourier变换法计算电场 ...

  7. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  8. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  9. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  10. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

最新文章

  1. 深入浅出 Redis client/server交互流程
  2. 百度启动高管退休计划,总裁张亚勤今年十月退休
  3. C++ Primer 第9章 顺序容器 第一次学习笔记
  4. Ubuntu: 为firefox安装flash插件
  5. 华北科技学院计算机系综合性实验,华北科技学院计算机系综合性实验.doc
  6. opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧
  7. 威纶通触摸屏与mysql_威纶触摸屏应用实例 以及威纶通触摸屏配方组合
  8. 国内外大厂集结,远程办公大考成绩单发布!
  9. 开源 免费 java CMS - FreeCMS1.5 标签 ajaxStore
  10. SyntaxError: Non-ASCII character ‘\xe4‘ in file baseline.py on line 18, but no encoding declared;
  11. LINUX下载编译sqlite-jdbc(支持mips64el/loongarch64的jar包下载)
  12. ulipad.4.1.zip linux,在ubuntu中安装ulipad
  13. PPT设计制作与美化
  14. 小学生计算机画图熊猫,小学数学画图技能标准,小学数学示意图几种
  15. 微信扫码支付开发流程
  16. 免费的caj转word批量转换方法
  17. JAVA对接语音验证码接口API
  18. 【2020年高被引学者】 朱松纯 北京大学
  19. DAO、DTO、PO、POJO、BO、VO、AO基本概念
  20. 设置CRT使用Console连接网络设备

热门文章

  1. 4. laravel 路由(1)
  2. php中的each()用法和list()用法
  3. unity 多选枚举
  4. oracle日期时间
  5. pta Percolate Up and Down(最小堆的插入维护和删除维护)
  6. Centos7搭建kubernetes搭建
  7. CoolBlog开发笔记第2课:搭建开发环境
  8. POJ 1458 Common Subsequence
  9. JS(JQUERY)操作框架页面全集
  10. Spark深入浅出企业级最佳实践