1. 程式人生 > >翻轉整數

翻轉整數

eal () eclipse [] not public 類型轉換 which emp

剛剛做了這題,發現自己數據結構都白學了一樣,根本就沒想起來用棧

題目如下

反轉整數—Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321
Example 2:

Input: -123
Output: -321
Example 3:

Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 
32-bit signed integer range: [?231, 231 ? 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

我看到題目的第一反應就是,互換位置不就好了,於是沒多想就開始各種類型轉換,代碼如下

 1 class Solution {
 2     public int reverse(int x) {
 3         //去掉符號
 4         if(x<0){ x = 0 - x; }
5 //將int轉換為String 6 String str1 = Integer.toString(x); 7 //將String轉換為char[] 8 char str2[] = str1.toCharArray(); 9 //交換位置 10 for(int i=0,j=str2.length-1;i<j;i++,j--){ 11 char temp=0; 12 temp=str2[i]; 13 str2[i]=str2[j];
14 str2[j]=temp; 15 } 16 //將char[]轉換為String 17 String str3 = new String(str2); 18 //將String轉換為int 19 return Integer.parseInt(str3); 20 } 21 }

int String char[ ] 之間的轉換到時都用了個遍,提交後才發現沒能通過,完全忘記了題目要求的數值範圍,簡單粗暴加了異常處理後,在eclipse進行測試又發現,忘記負號問題了,更改後最終提交通過的代碼如下

但是這個大概真的是最最簡單粗暴的方法了吧,leetcode給出的解決方案用到了棧,棧的概念我還記得,但是具體操作還要再看看

 1 class Solution {
 2     public int reverse(int x) {
 3     try{    
 4         //去掉符號
 5         int sign = 1;
 6         if(x < 0){ x = 0 - x; sign = -1;}
 7         //將int轉換為String
 8         String str1 = Integer.toString(x);
 9         //將String轉換為char[]
10         char str2[] = str1.toCharArray();
11         //交換位置
12         for(int i=0,j=str2.length-1;i<j;i++,j--){
13             char temp=0;
14             temp=str2[i];
15             str2[i]=str2[j];
16             str2[j]=temp;
17         }
18         //將char[]轉換為String
19         String str3 = new String(str2);
20         //將String轉換為int
21         //int b = Integer.parseInt(str3);
22         return sign*Integer.parseInt(str3);
23     }catch(Exception e){
24         return 0;
25     }
26     }
27 }

翻轉整數