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 }
他这个利用x=x/10来不断缩小x的位数,并且利用revertedNumber = revertedNumber * 10 + x % 10来获取后面的倒过来的数值。但是什么时候可以确定他已经取到一半了?
就是当新的数字不小于x的时候;如果是奇数位,那么新数字大于x,如果是偶数位,那么他们俩数值一样,最后判定他们是否是回文数的条件就是判断新数字是否和x相等或者
新数字/10和x相等。(这里的x指的是最后x的值)。