算法 9. 回文数

LeetCode https://leetcode.cn/problems/palindrome-number/

题目描述

给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。

思路

将这个数从中间分割为两半, 前半部分和后半部分的倒序一定是相同的
例如: 1221
前半部分 12, 后半部分21, 倒序为12
通过取模按位将后半部分取出来和前半部分对比即可

代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || ((x % 10) == 0 && x != 0))
return false;

int result = 0;
while (x > result) {
result = result * 10 + x % 10;
x /= 10;
}
return x == result || x == result / 10;
}
};