机器学习之路漫漫
MLEW(Maching Learning & Endless Way)

导航

 

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

 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 }

 

posted on 2015-11-18 19:42  suchang  阅读(159)  评论(0编辑  收藏  举报