标签:top 今天 log back ase false 回文 isp 日常
题目
判断一个整数是不是回文,在判断过程中不要使用额外空间。
**示例1:**
```
输入: num = 1221
输出: true
```
## 解题方案
**标签:** Math
**思路1:**
- 我们假设负数不是回文,以及int变量不属于额外空间
- 我们很容易想到一种方法,它贴近于我们日常判断回文的方法,一次判断对应的两位,即逐位判断
1 bool isPalindrome(int num) 2 { 3 if (num<0) 4 return false; 5 int base=1; 6 while (num/base >= 10) 7 base *= 10; 8 while (num!=0) 9 { 10 if (num/base != num%10) 11 return false; 12 num=(num%base) / 10; 13 base /= 100; 14 } 15 return true; 16 }
**思路2:**
- 首先,经过了之前的反转习题,看到今天这道题我们很容易想到,将整数(以下记为A)反转,然后进行比较即可。
- 这里参考了discuss中的一个代码,因为它有一个相较不错的避免溢出的方法
**代码:**
1 bool isPalindrome(int num) 2 { 3 if(num < 0) 4 return false; 5 int temp1 = num; 6 int temp2 = 0; 7 while(temp1 >= 10) 8 { 9 temp2 *= 10; 10 temp2 += temp1%10; 11 temp1 /= 10; 12 } 13 return temp2 == num/10 && temp1 == num%10; 14 }
## 参考资料
- https://discuss.leetcode.com/topic/9477/o-1-space-o-lgn-time-java-solution-no-overflow-risk/20
标签:top 今天 log back ase false 回文 isp 日常
原文地址:http://www.cnblogs.com/babetterdj/p/7762976.html