回文数
-> 题目描述
Palindrome Number
判断一个数字是不是回文数。回文数即数字从末尾反过来依旧和原数字相同
示例1:
Input: 121
Output: true
1
2
2
示例2:
Input: -121
Output: false
Explanation: 从左到右为 -121, 反过来是 121-,所以不是回文数
1
2
3
2
3
示例3:
Input: 10
Output: false
1
2
2
javascript:
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
};
1
2
3
4
5
6
7
2
3
4
5
6
7
要求:不能将数字转化为字符串来解
-> 解法
点击查看
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if(x<0 || x%10 ===0)
return false
const ret = []
let y = x
if(x<10)
return true
while(x !==0){
const remainder = x%10
ret.push(remainder)
x = (x - remainder)/10
}
const sum = ret.map((curr, i)=>{
return curr*Math.pow(10, ret.length-i-1)
}).reduce((x,y)=>x+y)
if(y === sum)
return true
return false
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-> 总结
虽然是 easy难度,但还是没有一次成功。
思路很常规,把数字倒过来求和与原来的比较是否相等即可。
注意几个特殊情况:
- 复数均为 false
- 0-9均为 true
- 10的倍数为 false
排名最快的算法用的是双指针,即一次循环比较前后的数是否相等,确实更加符合直觉
编辑此页 (opens new window)
更新于: 2019-07-31 15:56