Java 反轉整數


將一個整數中的數字進行顛倒,當顛倒后的整數溢出時,返回 0 (標記為 32 位整數)。

給定 x = 123,返回 321

給定 x = -123,返回 -321

 

思路:字符串處理,需要考慮一下情況    12300->00321 這時需要處理掉前面的0, 翻轉后大於2的32次方(整數的最大值,返回0)

代碼如下,時間復雜度O(n),空間復雜度O(n),如有更好的方式,請留言

 

 1   public int reverseInteger(int n) {
 2         String flag=n>=0?"":"-";
 3         char[] num = (Math.abs(n)+"").toCharArray();
 4         //int 最大值是2的32次方  21億 大於10位置就不用考慮了
 5         if(num.length>10){
 6             return 0;
 7         }
 8 
 9 
10         //翻轉char數組
11         int start=0;
12         int end = num.length-1;
13         while(start+1<=end){
14             char temp = num[start];
15             num[start]=num[end];
16             num[end]=temp;
17             start++;
18             end--;
19         }
20 
21         //處理0的情況   12300->00321 
22         String reverseStr = new String(num);
23         if(reverseStr.charAt(0)=='0'){
24             int k=0;
25             while(k<reverseStr.length()-1&&reverseStr.charAt(k)==0){
26                 k++;
27             }
28             reverseStr=reverseStr.substring(k);
29         }
30         
31        //處理大於2的32 並且還為10位的情況,int最大2147483647
32         Long overNum= Long.valueOf(reverseStr);
33         if(overNum>Integer.MAX_VALUE){
34             return 0;
35         }
36         
37        //拼接前邊的標志位
38         reverseStr=flag+reverseStr;
39         return Integer.valueOf(reverseStr);
40     }

 心得體會,這題目並不難,但是翻轉后的特殊情況需要考慮,最開始沒有想到處理0這種請跨國,以后思路還需要嚴謹一些


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM