算法学习(五)--判断一个整数是否是回文数字

本文介绍了一种在不使用额外内存的情况下,通过Java判断整数是否为回文的方法。主要思路是利用%和/运算符获取整数的首位和末位,并进行比较,递归去除已比较过的数字,直至确定是否为回文。
摘要由CSDN通过智能技术生成

题目:在不使用额外的内存空间的条件下判断一个整数是否是回文数字(int型整数)


思路:首先负数肯定都不是回文数字,所以我们需要考虑的只有0和正数。由于不能使用额外的内存空间,这里就需要放弃将数字转化为字符串或者使用数组这两种办法。这里我想到的办法是,根据输入的整数,我们将其拆分,分别将首位数字和末尾数字单独拆出来,进行比较是否相等,不相等则直接返回false(非回文);若相等,则去该数字的头尾,对剩下的部分重复这样的头尾比较操作,直到只剩下0位或者1位数。如:1331,我们先得到头部为1,尾部为1,比较相等,去掉头尾的两个1,剩下33;再对33取头尾,头部为3,尾部为3,去掉头尾之后循环结束,返回true(回文)。

    那么在这里,我这个办法的关键就是如何得到一个整型数的头尾了。这就需要灵活地运用%和/这两个符号了,%是取余操作,/是除法操作。首先,我们需要知道一个整数的位数,我们用multiple来表示该整数的数量级(multiple为10的倍数),times来表示该整数的位数。随后,用x/multiple得到首位数字,用x%10得到末尾数字,进行比较。最后x = x % multiple; x = x / 10;剔除首尾,持续循环。如果在循环结束前有任何首尾不相等,则会返回false;否则返回true。


实现过程:


                
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值