Description
Determine whether an integer is a palindrome. Do this without extra space.
Example
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.
Analyse
这也算是一道水题了,在不用额外的空间的情况下,判断一个整数是否回文。这里不用额外的空间应该指,不要去把整数提取到数组或转换成字符串再去判断是否回文。只需要将整数的一半翻转过来,再判断两边是否相等即可,不多解释,直接上代码。
Code
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) return false;
int sum = 0;
while (x > sum) {
sum = sum * 10 + x % 10;
x = x / 10;
}
return (x == sum) | (x == sum / 10);//偶数位数和奇数位数的判断
}
};