Reverse Integer - Palindrome Number - 简单模拟

第一个题目是将整数进行反转,这个题实现反转并不难,主要关键点在于如何进行溢出判断。溢出判断再上一篇字符串转整数中已有介绍,本题采用其中的第三种方法,将数字转为字符串,使用字符串比较大小的方法进行比较。

代码如下:

 1 class Solution {
 2 public:
 3     int reverse(int x) {
 4         int stand[10]={2,1,4,7,4,8,3,6,4,8};
 5         int getnum[10];
 6         int a=0,flag=0;
 7         if(x>0)
 8             flag=1;
 9         else
10             if(x<0)
11             {
12                 flag=-1;
13                 x=-x;
14             }
15             else
16                 return 0;
17         int count=0;
18         while(x>0)
19         {
20             getnum[count]=(x%10);
21             x=x/10;
22             count++;
23         }
24 
25         if(count==10)
26         {
27             int index=0;
28             for(int i=0;i<count;i++)
29             {
30                 if(stand[i]==getnum[i])
31                     index++;
32                 else
33                     if(stand[i]<getnum[i])
34                         return 0;
35                     else
36                         break;
37             }
38             if(index==10)
39             {
40                 if(flag==1)
41                     return 2147483648;
42                 else
43                     return 0;
44             }
45         }
46 
47         for(int i=0;i<count;i++)
48         a=a*10+getnum[i];
49 
50         return a*flag;
51     }
52 };

因为输入也一定最多是10位数,所以数组大小为10足够。

 

Palindrome Number

第二个题目是寻找回文数,题目要求不要使用多余的空间。不使用多余空间的方法是在将数字从低位向高位不断重组,当进行到一半的时候,必定会相等或者多出一位,除去这一位还是相等的。这样也不用担心溢出等问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章