题目:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number
题解:
C:
方法一:创建一个数组,把每一位数保存到数组中,然后判定。
bool isPalindrome(int x)
{
int a[100];
int n;
if(x<0)
return false;
for(int i=0;i<100;i++)
{
a[i]=x%10;
x=x/10;
if(x==0)
{
n=i;
break;
}
}
for(int i=0;i<=n;i++)
{
if(a[i]!=a[n])
return false;
else
n--;
}
return true;
}
方法二:求出倒序后的数,比较与原数是否相等。
(倒序后的数要用 long 类型,int 会发生溢出)
bool isPalindrome(int x)
{
if(x<0)
return false;
long y=0,tmp=x;
while(tmp)
{
y=y*10+tmp%10;
tmp=tmp/10;
}
if(x==y)
return true;
else
return false;
}
方法三:用 sprintf 转换成字符串。
bool isPalindrome(int x)
{
char a[100];
sprintf(a,"%d",x);
int left=0,right=strlen(a)-1;
while(left<right)
{
if(a[left]!=a[right])
return false;
else
{
left++;
right--;
}
}
return true;
}