【JAVA】【刷题子】9.回文数

一、题目与题目分析

题目

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

  回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  例如,121 是回文,而 123 不是。

image.png

  (题目来源:力扣:1022.从根到叶的二进制数之和

题目分析

回文数,就是数字翻转过来,和原来的数一样的。

  如“210012”,翻转过来还是“210012”;

  如“1234321”,翻转过来还是“1234321”;

  举个反例,“1234”,翻转过来是“4321”,不是原来的数了,不属于回文数。

二、整体逻辑与主要代码

题目分析已经比较清楚了,接下来我们进入代码设计。

整体逻辑

由于负数有符号,直接被划为不是回文数;并且,第一位数字不可能是为0,所以再最后一位数字如果是0也直接就不是回文数。因此,先排除两个情况。(即x<0x%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;
	}
}

三、结果展示

结果展示.png

四、人生总结

半年过了,糟糕的事全发生在最近这一个月里了;也该做个了结,下半年开始好了吧!

题目数据库

Gitee:传送门

文章小尾巴

文章写作、模板、文章小尾巴可参考:《写作“小心思”》

  感谢你看到最后,最后再说两点~
  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
  我是南方者,一个热爱计算机更热爱祖国的南方人。

  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南方者

你的鼓励将驱动我的开源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值