题目
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,121 是回文,而 123 不是。
示例 1:
1 | 输入:x = 121 |
示例 2:
1 | 输入:x = -121 |
示例3:
1 | 输入:x = 10 |
思路
我们可以把该数字转为字符串,然后在旋转,最后在比较是否相等即可。 但是题目的含义其实让我们避免用字符串来判断,所以这里我们就用数学的方式来
对他进行一个求解。如果我们要判定是否回文,最好的办法还是需要拿到他旋转后的回文数。
问题
- 如何把数字拆分开来
- 如何组成一个旋转后的回文数
解决
对于上面问题,我们先解决第一个:
数字拆分
首先我们要拿到个位数,可以用 %10
来取得个位
示例:
1 | 数字 123 |
我们知道如何取得个位后,还要确认如何确定该数的长度,可以使用公示/10
来获取,在上面我们先拿到了个位数3,然后在通过/10
进行运算 ,如果是个位3的话,那么结果就是0.3,在JAVA中整数除整数等于整数,所以0.3就等于0,就代表前面没有数值了。反之如果不等于0,就继续拿个位数
如何组成一个旋转后的回文数
在数字拆分中我们学会了如何拿到每个数字,其实在上一节里,要想拿完所有的数字,就必须通过/10
来不断计算,知道等于0为止,这里我们就可以用循环
来做,但是我们拆分后如何拼接呢?我们可以每循环一次把结果保存下来,然后x10
,代表如果还有数字,那么我的长度就加1。
1 | int x=123; |
完整代码
1 |
|