9-回文数

1.首先应该将负数和个位数为0的数排除。

2.我的方法是定义一个比较大的数组来存储每个数字,然后进行比较每个数字,但是这种方法所占用的空间比较大,官方给的答案就比较方便了。

先上图:

 

 

 

看代码:

 1 class Solution {
 2     public boolean isPalindrome(int x) {
 3         int newnumber=0;
 4         if(x<0||(x%10==0&&x!=0))
 5         return false;
 6         while(x>newnumber)
 7             {
 8                 newnumber=x%10+newnumber*10;
 9                 x=x/10;
10             }
11         if(newnumber==x||newnumber/10==x)
12         return true;
13         else return false;
14         /*boolean flag=true;
15         if(x<0||(x%10==0&&x!=0))
16         flag= false;
17         
18         else
19         {int j=0;//用于存储这个整数的位数
20         int k=0;
21         int m[]=new int[50];
22         while(x!=0)
23             {
24                 j++;
25                 k=x%10;
26                 m[j-1]=k;
27                 x=x/10;
28                 
29             }
30            
31        // if(m[j-1]==0)flag=false;
32        
33        
34         for(int i=0;i<j/2;i++)
35             {
36                 if(m[i]!=m[j-1-i])
37                 flag=false;
38             }
39         
40 
41     }
42     return flag;*/
43     }
44 }
View Code

 

 他这个利用x=x/10来不断缩小x的位数,并且利用revertedNumber = revertedNumber * 10 + x % 10来获取后面的倒过来的数值。但是什么时候可以确定他已经取到一半了?

就是当新的数字不小于x的时候;如果是奇数位,那么新数字大于x,如果是偶数位,那么他们俩数值一样,最后判定他们是否是回文数的条件就是判断新数字是否和x相等或者

新数字/10和x相等。(这里的x指的是最后x的值)。

 

 

posted @ 2020-08-02 09:17  卑微的孤独患者  阅读(146)  评论(0编辑  收藏  举报