【leetcode】9. Palindrome Number (easy)
问题描述:

问题示例:


个人思路:
从给出的三个例子可以看出: 121 是回文字,因为从左边开始读是121从右边开始读是121.
但是-121不是回文字不是因为从左边开始读是-121从右边开始是121-,不是回文字。最后一个例子,10从左边开始读是10从右边是01是不相同的。
我们得到以下结论
1. 给的数字要对称
2.必须要正数
3.最后一个数不能是0
我想到的解题 第一步:判断该数非0,把整数每一位取出来
第二步:从后往前,首先判断它的最后一位是否为0.不是0之后
第三步:判断是否对称

Leetcode官方题解:
第1步:处理临界情况即(第一步+第二步)
第2步:采用反转的方式:比如1221将其反转12(后部分21反转得到,其实就是我说的对称)

这其中的难点是: 反转数字。反转数字中:会遇到以下问题
1.感觉没法表示 反转的后两位数。
2.遇到奇数长度的数字很苦手
第一次写的时候就感觉没法反转:
官方采用这个方法来反转:
我当时就把个位数求出来然后十位数求出来*10然后发现没办法更新,个位上的数要更新为十位上的数。 引入revertnumber这个中间变量,revertnumber = 0。revertnumber=x%10.此时为第一次,第二次要把revertnumber表示的数乘10升级为十位,然后把x更新去掉原来的个位即 x /10.最后(x/10)%10.但是此时巧合的是,revertnumber初始化为0,所以可以第一次%10的结果和revertnumber是一致的。利用revertnumber=(x%10)+revertnumber*10.
解决奇数问题:
就是奇数中间数是关于自己对称的,所以把revertnumber/10把中间数去掉。然后将前半部分和后半部分判断相同。