1. 程式人生 > >LeetCode——7 Java之整數反轉

LeetCode——7 Java之整數反轉

題目:

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

注意:

假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−2^31,  2^31 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

思路:可以把這個整數先取絕對值,然後轉換為字元陣列,逆序輸出,判斷輸出後的值是否超出範圍,若超出範圍再做溢位處理,沒有超出範圍,如果輸入的數是正數,就返回正數,如果輸入的數是負數,逆序輸出的值加上負號即可。此思路需要掌握的知識點:1.整數取絕對值,Math.abs(int);2.StringBuffer字元追加;3.整數轉換為String類:String.valueOf(int);4.String類轉換為char[]:char[] ch=s.toCharArray();5.StringBuffer類轉換為String類:buf.toString();6.String類轉換為int型別:Integer.parseInt(str);此時會出現NumberFormatException異常,所以記得丟擲一下。6.另外,數值範圍的表示,要知道怎麼表示數字在 [−2^31,  2^31 − 1]它之間。

程式碼:

 1 class Solution {
 2     public int reverse(int x) {
 3         StringBuffer buf=new StringBuffer();
 4         if(x>-2147483648||x<2147483647){
 5             int y=Math.abs(x);
 6             String s=String.valueOf(y);
 7             char[] ch=s.toCharArray();
 8             for
(int i=ch.length-1;i>=0;i--){ 9 buf.append(ch[i]); 10 } 11 String str=buf.toString(); 12 try{ 13 int num=Integer.parseInt(str); 14 if(x>=0) 15 x=num; 16 if(x<0)
17 x=-num; 18 return x; 19 }catch(NumberFormatException e){ 20 System.out.println("NumberFormatException!please input the integer again!"); 21 return 0; 22 } 23 }else{ 24 return 0; 25 } 26 } 27 }