Palindrome Number
[Problem Link]
Description
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example
Input: 121
Output: true
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.
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Solution 1
class Solution {
public:
bool isPalindrome(int x) {
string temp;
stringstream ss;
ss << x;
ss >> temp;
if (!isdigit(temp[0])) return false;
int ssLen = temp.length();
for (int i = 0; i < ssLen/2 + 1; i++) {
if (temp[i] != temp[ssLen-i-1]) return false;
}
return true;
}
};
Solution 2
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
long firstVal = x;
long secondVal = 0;
while(x != 0) {
secondVal = secondVal*10 + x%10;
x = x/10;
}
cout << secondVal;
if (firstVal != secondVal) return false;
return true;
}
};
Summary
- 解法1将int转为字符串解决。
- 解法2没利用字符串解决,计算出倒序的数值再进行比较。