给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
bool isPalindrome(int x) {
if(x<0)
return false;
long int a=x,b=0L; //长整形避免溢出
while (a!=0){
b=b*10+a%10; //将每一位的数字依次反转
a=a/10; //依次求出个、十、百位上的数字
}
if (x==b)
return true;
else
return false;
}
知识点:
- 基本类型整形类型
基本整型int:分配2个字节或4个字节,范围是-231到231-1
短整型short int:分配4个字节,范围是-32768——32767
长整型long int:分配4个字节,范围是-263到263-1
- 溢出
原因:整型数字反转后可能会溢出,因为反转过程中,数字的数值可能超过了整型数字的最大值或最小值。例如,对于一个有符号的32位整数(int),它的最大值是2147483647,最小值是-2147483648。如果一个有符号的32位整数的值被反转后,其数值可能会超过这个范围,从而导致溢出。
方法:
- 如果必须反转超出数据类型范围的数值,可以考虑使用更大的数据类型(如long、long long等)。
- C语言中的
<math.h>
库就提供了一些函数(如exp、pow
、sqr、fscalbn、scalbln
)来处理可能出现的溢出问题。