LEETCODE算法:9. Palindrome Number

题目

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//转换字符串
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
string tmp=to_string(x);
int i=0,j=tmp.length()-1;
while(i<=j)
{
if(tmp[i]!=tmp[j]) return false;
i++;j--;
}
return true;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//翻转后一半的数字,然后通过比较大小的方式确定是否为回文数,要排除末尾为0的te
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
else if(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;
}
};