力扣小白刷题之9题回文数

题目描述

判断一个整数是否是回文数。

思路

参考自:https://leetcode-cn.com/problems/palindrome-number/solution/dong-hua-hui-wen-shu-de-san-chong-jie-fa-fa-jie-ch/

要求不能使用额外空间,也就不能将整数转换为字符串进行判断。
将整数分为左右两部分,右边那部分需要转置,然后判断这两部分是否相等。

由于回文数的位数可奇可偶,所以当它的长度为偶数时,对折过来应该是相等的;当它的长度为奇数时,需要去掉一位数(除以10并取整)。
具体做法如下:

  • 每次进行取余操作 (% 10),取出最低的数字(y = x % 10)
  • 将最低的数字加到取出数的末尾:revertNum = revertNum * 10 + y
  • 每取一个最低位数字,x 都要自除以 10
  • 判断 x 是不是小于 revertNum,当它小于的时候,说明数字已经对半或者过半了
  • 最后,判断奇偶数的情况:如果是偶数的话,revertNum 和 x 相等;如果是奇数的话,最中间的数字就在 revertNum的最低位上,将它除以 10 以后应该和 x 相等。
    力扣小白刷题之9题回文数

代码

力扣小白刷题之9题回文数