判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
思路1:将数的每一位存入vector中,再判断是否为回文数即可。
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
vector<int> dp;
while(x){
dp.push_back(x%10);
x/=10;;
}
for(int i=0;i<dp.size()/2;++i){
if(dp[i]!=dp[dp.size()-i-1]) return false;
}
return true;
}
};
思路二:如果不使用额外的数据结构,只需要先获得他的反向数值,再比较是否与原值相等即可。
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
int res=0;
int c=x;
while(c){
res=res*10+c%10;
c=c/10;
}
return res==x;
}
};