LeetCode9 Palindrome Number

文章目录
  1. 1. 描述
  2. 2. 样例
  3. 3. 思路
  4. 4. 代码

描述

Determine whether an integer is a palindrome. Do this without extra space.

样例

1
Input: 121
1
Output: true

思路

判断一个数是否是回文的。

首先负数肯定不是,因为有个负号。其次,最后一位不能为0,因为翻转之后会有前导0。

然后只要把前半段和后半段的数(后半段的要翻转一下)取出来比较,判断是否相等即可。

比如123321,则前半段为123,翻转之后的后半段也是123,说明是回文的。

注意如果是奇数的话,要去掉中间的那位再比较。

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || (x > 0 && x % 10 == 0)) return false;
int rev = 0;
while (rev < x) {
rev = rev * 10 + x % 10;
x /= 10;
}
return (rev == x) || (rev / 10 == x);
}
};
分享到 评论