9. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
最简单的方法就是把整数转换为字符串
class Solution {
public:
bool isPalindrome(int x) {
if(x<0)return false;
string s=to_string(x);
string tmp=s;
reverse(tmp.begin(),tmp.end());
if(s==tmp) return true;
return false;
}
};
不转换的办法就是通过取余的方法来获得首尾的数来进行比较
class Solution {
public:
bool isPalindrome(int x) {
if(x<0)return false;
int start;
int end;
int len=1;
int num=x;
while((num/10)!=0){len++;num=num/10;}
int low=1;
int high=len;
while(low<high){
start=x/pow(10,len-1);
end=x%10;
if(start!=end){
return false;
}
x=(x-start*pow(10,(len-1)))/10;
low++;
high--;
len=len-2;
}
return true;
}
};