翻轉整數
阿新 • • 發佈:2018-07-05
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 the32-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 }
翻轉整數