因为是int型整数,不是字符,不能用指针和数组下标分别从头尾比较。所以用除法求首位,用取余求末位,再进行比较。
#include<stdbool.h>
bool isPalindrome(int x ) {
if(x < 0)
return false;
int weight=1;
while(x / weight >= 10)
weight = weight * 10; //累计该数的位数:10,100,1000,10000……
int left, right;
while(x > 0){
left = x / weight; //依次取最高位
right = x % 10; //依次取最低位
if(left != right)
return false; //前后不等即结束
x = (x % weight) / 10; // x%weight是去掉首位,再/10是去掉末位
weight = weight / 100; //去掉两位
}
return true;
}

京公网安备 11010502036488号