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:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
分析
转化为字符串,倒置字符串若与原来相同,返回true。
c++实现
class Solution {
public:
string reverse(string s) {
for (int i = 0; i <= (s.length()-1)/2; i++)
{
char tmp = s[i];
s[i] = s[s.length()-1-i];
s[s.length()-1-i] = tmp;
}
return s;
}
bool isPalindrome(int x) {
stringstream ss;
ss << x;
string s = ss.str();
string S = reverse(s);
for (int i = 0; i < S.length(); i++)
{
if (S[i] != s[i])
return false;
}
return true;
}
};