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

第二個題目是尋找回文數,題目要求不要使用多餘的空間。不使用多餘空間的方法是在將數字從低位向高位不斷重組,當進行到一半的時候,必定會相等或者多出一位,除去這一位還是相等的。這樣也不用擔心溢出等問題。

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