第一个题目是将整数进行反转,这个题实现反转并不难,主要关键点在于如何进行溢出判断。溢出判断再上一篇字符串转整数中已有介绍,本题采用其中的第三种方法,将数字转为字符串,使用字符串比较大小的方法进行比较。
代码如下:
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
第二个题目是寻找回文数,题目要求不要使用多余的空间。不使用多余空间的方法是在将数字从低位向高位不断重组,当进行到一半的时候,必定会相等或者多出一位,除去这一位还是相等的。这样也不用担心溢出等问题。
时间: 2024-11-09 13:27:06