今天给大家带来的思路是 反转数字在判断
假设我们输入1221 我们只需要翻转一半 翻转后面的21就可以 得到12 12=12所以他是回文数
1.如何翻转数字
我们把数字x%10拿到最后一位 在把数字/10拿把最后一位移除
例如1221 先%10=1,在/10=122;
2.如何知道已经翻转一半
例如1221 我们 先拿到了1 tmp=1,121>1 在拿到 2,tmp=12; 12>21此条件不成立所以就代表已经翻转了一半
除了这个思想我们应该在去处理特殊的数字 比如最后一位等于0 最高位不可能位0 所以他一定不是回文 负数-123 321- 所以负数也一定不是回文数字
接下来我们用1221和121为参考来分析一下思路
看代码
bool isPalindrome(int x){
if(x<0||x%10==0&&x!=0)//如果是特殊条件直接返回false
return false;
int tmp=0;
while (x > tmp)
{
tmp = tmp * 10 + x % 10;
x /= 10;
}
return x == tmp || x == tmp / 10;
}