9. 回文数
难度简单1791
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121输出:true
示例 2:
输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:
输入:x = -101输出:false
提示:
- -231 <= x <= 231 - 1
进阶:你能不将整数转为字符串来解决这个问题吗?
思路
- 转化为字符串,比较判断
- 优化:数字翻转,比较两个数字是否相等(空间优化)
代码
class Solution {
public:
bool isPalindrome(int x) {
if(x<0)
return 0;
vector<int> x_num(10);
int i=0;
while(x)//转化为字符串
{
x_num[i++]=x%10;
x/=10;
}
int n=i,j;
for(i=0;i<n/2;i++)//判断
{
j=n-1-i;
if(x_num[i]!=x_num[j])
return 0;
}
return 1;
}
};