93 lines
2.0 KiB
Markdown
93 lines
2.0 KiB
Markdown
# 毎日一题 - 9. Palindrome number
|
||
|
||
## 信息卡片
|
||
|
||
- 时间:2019-07-25
|
||
- 题目链接:https://leetcode.com/problems/palindrome-number/submissions/
|
||
- tag:`Math`
|
||
|
||
## 题目描述
|
||
|
||
```
|
||
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
|
||
|
||
Example 1:
|
||
|
||
Input: 121
|
||
Output: true
|
||
|
||
Example 2:
|
||
|
||
Input: -121
|
||
Output: false
|
||
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
|
||
|
||
Example 3:
|
||
|
||
Input: 10
|
||
Output: false
|
||
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
|
||
|
||
Follow up:
|
||
|
||
Coud you solve it without converting the integer to a string?
|
||
```
|
||
|
||
## 参考答案
|
||
|
||
转成字符串方式
|
||
1. 负数都是非回文数,10的整数倍不是回文。
|
||
2. 将数字转为字符串,再逆序排列字符串。两者比较,相等就是回文数。
|
||
|
||
直接操作整数方式
|
||
1. 复制x到temp;
|
||
2. 取temp末尾数字,方式为temp与10的求余;组成新数reverse;
|
||
3. 每取完一位,temp缩小10倍并且去掉小数。
|
||
4. reverse要`先扩大十倍`再加上取下来的数
|
||
5. 当temp === 0时,表示已经取完;reverse与x比较
|
||
|
||
|
||
参考JavaScript代码:
|
||
|
||
```js
|
||
/**
|
||
* @param {number} x
|
||
* @return {boolean}
|
||
* 转成字符串
|
||
*/
|
||
var isPalindrome = function(x) {
|
||
if(x < 0 ) return false;
|
||
if(x === 0) return true;
|
||
if(x % 10 === 0) return false;
|
||
let reverse = '';
|
||
let str = String(x);
|
||
for(let i = str.length - 1; i >= 0; i--) {
|
||
reverse += str[i]
|
||
}
|
||
return str === reverse
|
||
};
|
||
|
||
/**
|
||
* @param {number} x
|
||
* @return {boolean}
|
||
* 不转成字符串
|
||
*/
|
||
var isPalindrome = function(x) {
|
||
if(x < 0 ) return false;
|
||
if(x === 0) return true;
|
||
if(x % 10 === 0) return false;
|
||
let temp = x;
|
||
let reverse = 0;
|
||
while(temp > 0) {
|
||
let num = temp % 10;
|
||
temp = (temp - num)/10; // 或 temp = (temp / 10) >> 0,去除小数位
|
||
reverse = reverse * 10 + num
|
||
}
|
||
return x === reverse
|
||
};
|
||
```
|
||
|
||
## 优秀解答
|
||
|
||
> 暂缺
|