给定一个数字,怎么判断它是不是回文形式的?
给定一个数字,例如:1234554321,怎么才能判断这个数是不是回文呢?要求时间复杂度是O(n),空间复杂度是O(1).约定负数和0都不是回文。
如果要求不是空间复杂度是O(1),那可以直接把数字转换成字符串,用sprintf函数,然后判断这个字符串是不是回文。
第一种思路就是把这个数字,比如123321进行反转,然后把反转后的结果和原来的数字进行比较,如果相等那么就说明是这个数字是回文形式,相反则不是,基本思路代码如下:
bool isPalindrome(int x) { if (x < 0) return false; int div = 1; while (x / div >= 10) { div *= 10; } while (x != 0) { int l = x / div; int r = x % 10; if (l != r) return false; x = (x % div) / 10; div /= 100; } return true;}