码迷,mamicode.com
首页 > 其他好文 > 详细

判断一个整数是不是回文

时间:2017-10-31 20:09:03      阅读:208      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!