题目:回文数(简单)
一、题干:
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121
是回文,而 123
不是。
二、思考过程
基本想法:把这个整数从左向右遍历依次,然后再从右向左遍历一次,如果两次遍历的结果相同就返回true,否则返回false。
遍历两次,还要依次记录每次遍历结果,这样编写代码太麻烦了,所以想找一种更简洁的代码实现功能。
这道题与我做过的另一道题有相似之处,具体可以参考leetcode官网题库的7题(整数反转)
参考整数反转,我只需要把传入的数字进行一次整数反转,然后判断反转后的数字与传入的数字是否相同就可以判断他是不是回文数了。
三、解答过程
四、优化
上面的代码已经通过了leetcode的测试,说明这段代码是可以运行的,但是这个代码写的并不是最优的。
在休息的时候我想到了数据结构中的折半思想。那么我是否可以把这个回文数也折半呢,因为我只需要实现回文数的判断,
理论上我只需要完成一半的回文数构造就能实现程序了,我可以把经过处理的x和r进行比较,就能判断是否是回文数了
我的想法与官方解答一致,有兴趣可以取leetcode官网查看该题解答。
原文:https://www.cnblogs.com/zyq79434/p/14732861.html