一、题目与题目分析
题目
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
(题目来源:力扣:1022.从根到叶的二进制数之和)
题目分析
回文数,就是数字翻转过来,和原来的数一样的。
如“210012”,翻转过来还是“210012”;
如“1234321”,翻转过来还是“1234321”;
举个反例,“1234”,翻转过来是“4321”,不是原来的数了,不属于回文数。
二、整体逻辑与主要代码
题目分析已经比较清楚了,接下来我们进入代码设计。
整体逻辑
由于负数有符号,直接被划为不是回文数;并且,第一位数字不可能是为0,所以再最后一位数字如果是0也直接就不是回文数。因此,先排除两个情况。(即x<0
和x%10==0
),剩下就判断翻转后的数是否和原数相等即可啦!
翻转的逻辑对10求余获取最后一位,同时下一轮操作乘上10,加上这次的对10求余的数…依次循环;更详细的看主要代码吧~
主要代码
整体逻辑清晰了之后,同时也有较清楚的注释。直接来看代码吧! (如有不懂的或者更好的建议,欢迎评论区分享友友的看法哈~)
class Solution {
public static boolean isPalindrome(int x) {
if (x == 0) {
// 0为回文数
return true;
}
if (x < 0 || x % 10 == 0) {
// 为负数或者尾数为0,直接返回false
return false;
}
// 返回结果
int res = getNumOverturn(x);
// 对比结果
return res == x;
}
/**
* 数字翻转
*
* @author : nanfangzhe
* @date :2022年6月16日
*/
public static int getNumOverturn(int x) {
// 定义回文数的结果
int res = 0;
// x大于0,循环
while (x > 0) {
// 前后翻转(如2021 -> 会转为1202)
res = res * 10 + x % 10;
// 位数减1
x = x / 10;
}
return res;
}
}
三、结果展示
四、人生总结
半年过了,糟糕的事全发生在最近这一个月里了;也该做个了结,下半年开始好了吧!
题目数据库
Gitee:传送门
文章小尾巴
文章写作、模板、文章小尾巴可参考:《写作“小心思”》
感谢你看到最后,最后再说两点~
①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
我是南方者,一个热爱计算机更热爱祖国的南方人。
(文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)