内容简介:解题千千万,官方独一家,上面是官方使用 C# 进行的题解。小伙伴可以先自己在本地尝试解题,再看看官方解题,最后再回来看看将数字转为数组来判断,是比较简单的一种方法:
- 难度 :简单
- 涉及知识 :数学
- 题目地址 : leetcode-cn.com/problems/pa…
- 题目内容 :
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 复制代码
三 解题
- 官方题解 : leetcode-cn.com/problems/pa…
解题千千万,官方独一家,上面是官方使用 C# 进行的题解。
小伙伴可以先自己在本地尝试解题,再看看官方解题,最后再回来看看 jsliang 讲解下使用 JavaScript 的解题思路。
3.1 解法 - 数组操作
- 解题代码 :
var isPalindrome = function(x) { const arr = String(x).split(''); for (let i = 0; i < arr.length / 2; i++) { if (arr[i] !== arr[arr.length - (i + 1)]) { return false; } } return true; }; 复制代码
- 执行测试 :
-
x
:1231
-
return
:
false 复制代码
- LeetCode Submit :
✔ Accepted ✔ 11509/11509 cases passed (316 ms) ✔ Your runtime beats 97.12 % of javascript submissions ✔ Your memory usage beats 67.78 % of javascript submissions (45.5 MB) 复制代码
- 知识点 :
-
split()
:split()
方法使用指定的分隔符字符串将一个 String 对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。split()
详细介绍
- 解题思路 :
将数字转为数组来判断,是比较简单的一种方法:
首先,我们将数字转成字符串,再转成数组。
然后,我们循环遍历这个数组。
接着,判断第 i
位和第 length - (i + 1)
位(例如 1231
,第 0
位对应的是第 length - 1
位,第 1
位对应的是第 length - 2
位)。
最后,如果循环判断没问题,就返回 true
;如果循环判断有问题,直接在循环中 return false
。
3.2 解法 - 数学算法
- 解题代码 :
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); }; 复制代码
- 执行测试 :
-
x
:12321
-
return
:
true 复制代码
- LeetCode Submit :
✔ Accepted ✔ 11509/11509 cases passed (316 ms) ✔ Your runtime beats 97.12 % of javascript submissions ✔ Your memory usage beats 67.78 % of javascript submissions (45.5 MB) 复制代码
- 知识点 :
-
Math
:JS 中的内置对象,具有数学常数和函数的属性和方法。Math
详细介绍
- 解题思路 :
首先,我们可以想象:当一个数的长度为偶数,那么它对折过来应该是相等的;当一个数的长度是奇数,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整),因为奇数长度的那个数,我们不需要判断它中间的数字。
我们定义传递过来的参数为: x
,对折的数字为: z
,而 y
为 x
目前的个位数。
然后,我们需要知道如何获取到一个数的个位数: y = x % 10
,我们也需要知道如何将单个数字不断添加到一个数的末尾: z = z * 10 + y
,例如: z = 1 * 10 + 2 = 12
。
接着,我们只需要判断 x
是不是小于 z
了,毕竟当它小于的时候,说明数字已经对半或者过半了。
最后,我们判断一开始的两种情况,并返回 true
或者 false
即可。
jsliang广告推送:
也许小伙伴想了解下云服务器
或者小伙伴想买一台云服务器
或者小伙伴需要续费云服务器
欢迎点击 云服务器推广 查看!
jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议 进行许可。
基于 github.com/LiangJunron… 上的作品创作。
本许可协议授权之外的使用权限可以从 creativecommons.org/licenses/by… 处获得。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 回文算法(JavaScript)
- 让我们一起啃算法----回文数
- 每日一道 LeetCode (3):回文数
- java算法题:最长回文串
- 每天一道leetcode234-回文链表
- 判断单链表回文的三种方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
运营有道:重新定义互联网运营
李明轩 / 机械工业出版社 / 2017-7-31 / 69.00元
本书是前百度资深运营专家多年运营经验的总结,是作者运营千万级用户规模的大型互联网产品的实操经验复盘,是作者在“在行”上为近百位CEO和高管提供互联网运营咨询服务后对互联网运营需求的深入洞见。 本书的思想基础是“运营必须以用户为中心”,从产品、用户、市场3个维度对互联网运营重新进行了系统性的梳理:从道的层面解读并重新定义运营方法论,从术的层面围绕方法论提出行之有效的解决方法和实际案例。重点不在......一起来看看 《运营有道:重新定义互联网运营》 这本书的介绍吧!