欢迎光临散文网 会员登陆 & 注册

【leetcode】9. Palindrome Number (easy)

2023-07-08 18:16 作者:Poyo_a  | 我要投稿

问题描述:

问题示例:

个人思路:

   从给出的三个例子可以看出: 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把中间数去掉。然后将前半部分和后半部分判断相同。


【leetcode】9. Palindrome Number (easy)的评论 (共 条)

分享到微博请遵守国家法律