写给自己的学习督促博客-Day01
进入Leetcode新手村
回文数09
题目:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
解题思路:
把x后一半数字进行旋转,储存在变量revertedNumber中,最后将x前半段数字与revertedNumber进行比较。
核心问题及算法:
- revertedNumber如何取得x后一半的已旋转的数字(循环体)
//初始化 revertedNumber = 0 revertedNumber = revertedNumber * 10 + x & 10; x /= 10;
- 何时退出循环->循环条件
while( x > revertedNumber) //当x的位数是奇数时,如x=12321,循环体结束时x==12,而revertedNumber==123;此时就应退出循环 //当x的位数是偶数时,如x=123321,循环体结束时x==123,revertedNumber==123,此时应结束循环
- 如何根据revertedNumber和x返回正确的值
return revertedNumber == x || (revertedNumber/10 == x) //分别对应x有偶数位数和奇数位数的情况