题目链接:
题目:
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?
题目分析:
给定一个int 型的整数,判断是不是回文数。
解题思路:
思路一:
一开始的思路是根据题目LeetCode【#7】Reverse Integer中,求一个int 型的反转。那么可以先求一个int 型的反转,然后判断是不是相等。
其中,负数一定不是回文数,其他的就类似这第七题一样。
思路二:
而在题目中,最后说,不要用将int 型变为string 的做法做,因为我们可以利用 to_string()函数将一个int 型变为string 型,然后string中有一个算法——reverse将元素反转。
具体string 使用可以看我的另一篇博客:C++的 string 使用
AC代码:
思路一:
class Solution {
public:
bool isPalindrome(int x) {
if(x < 0)
return false;
int temp = x;
long long rev = 0;
while(temp)
{
rev = rev*10+temp%10;
temp /= 10;
}
if(rev<INT_MIN || rev>INT_MAX)
return false;
int res = (int)rev;
if(x == res)
return true;
else
return false;
}
};
思路二:
class Solution {
public:
bool isPalindrome(int x) {
string s1 = to_string(x);
string s2 = s1;
reverse(s2.begin(),s2.end());
if(s1 == s2)
return true;
else
return false;
}
};