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

【Leetcode-easy】Palindrome Number

时间:2015-11-18 21:10:07      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

思路:除和求余 取得首位和末尾 比较是否相等。

 1     public boolean isPalindrome(int x){
 2         if(x<0){
 3             return false;
 4         }
 5         int div=1;
 6         while(x/div>=10){
 7             div*=10;
 8         }
 9         while(x!=0){
10             int left=x/div;
11             int right=x%10;
12             if(left!=right){
13                 return false;
14             }
15             x=(x%div)/10;//去掉最高位和最低位
16             div/=100;
17         }
18         return true;
19     }

其他思路:http://m.blog.csdn.net/blog/yike1207/44307819博文总结了几种方法(整数反转、转化为字符串处理,取高低位比较)该作者认为上述方法都用到了额外的存储空间,不用额外的存储空间一种方法是通过递归,并修改引用参数值。

 1 bool isPalindrome(int x, int &y) {   
 2   // y为必须为引用和指针型可改变的变量
 3   if (x < 0) return false;
 4   if (x == 0) return true;
 5   if (isPalindrome(x/10, y) && (x%10 == y%10)) {
 6     // 每次执行到 x%10 == y%10 的时候 x 为前i位,y表示前(n+1-i)位
 7     y /= 10;               
 8     return true;
 9   } else {
10     return false;
11   }
12 }
13 bool isPalindrome(int x) {
14   return isPalindrome(x, x);
15 }

 

【Leetcode-easy】Palindrome Number

标签:

原文地址:http://www.cnblogs.com/scecit/p/4975666.html

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