一问题描述
判断一个 integer 型的数字是否是回文, 空间复杂度应该是常数级别的
二问题分析
首先, 负数不是回文, 10 的整数倍不会是回文, 个位数一定是回文
三代码实现
思路: 将一个数字翻转, 即最高位变成最低位, 最低位变成最高位, 然后比较输入的字符和翻转之后的字符
- class Solution {bool isPalindrome(int x)
- {
- if( x < 0 || (x%10 == 0 && x != 0))
- {
- return false;
- }
- int i = x; // 将 x 保存起来
- int reveredNum = 0; // 保存翻转之后的数字
- while (x != 0)
- {
- reveredNum = reveredNum* 10 + x % 10;1
- x /= 10;
- }
- return i == reveredNum ;
- }
- }
来源: http://www.bubuko.com/infodetail-2538590.html