LeetCode题库整理【Java】—— 7整数反转
LeetCode題庫整理【Java】
7.整數反轉
題目:給出一個32位的有符號整數,你需要將這個這個整數中每位上的數字進行反轉。
示例1:
輸入: 123
輸出: 321
示例2:
輸入: -123
輸出: -321
示例3:
輸入: 120
輸出: 21
注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值范圍為 [?2^31, (2^31) ?1]。請根據這個假設,如果反轉后整數溢出那么就返回 0。
思路:用一個StringBuilder(字符串生成器)類型的變量來存儲數字中每一位上的值,通過對輸入的int型數值采用取余的方式依次取出最后一位數字,數組越界的話使用 Integer.parseInt()會拋出異常,從而達到數組越界的判斷
完整的Java測試代碼如下:
public class IntegerInversion {public static void main(String[] args) {// TODO Auto-generated method stubint num=-123;IntegerInversion reversion=new IntegerInversion();reversion.reverse(num);}public int reverse(int x) {StringBuilder str=new StringBuilder();if(x<0) { //保存負號,使x變為絕對值大小str.append('-');x = -x;}while(x>0) {str.append( x%10 );//逐次將x的最后一位數字加進str中x/=10;//取整}System.out.println(str);//用Integer.parseInt()函數拋出異常來判斷反轉后的字符串化為整型后是否越界try {return Integer.parseInt(str.toString());}catch(Exception e) {return 0;}} }顯然,這種方法只遍歷了一遍原來的數字,時間復雜度是O(n),n為輸入數字的位數(包含負號)。至于空間復雜度,由于只用了一個長度為n的StringBuilder類型的變量,因此空間復雜度是O(n)。
參考博文:LeetCode007——反轉整數https://blog.csdn.net/qq_41231926/article/details/81915741
注:有一些博主使用long類型變量來存儲轉換后的結果進而判斷是否越界,我覺得不符合題目中 “只能存儲得下 32 位的有符號整數” 的假設,32位有符號整數應該是將數據類型限制為了int型, 所以我覺得不能使用long, 當然,此意見僅供參考。
總結
以上是生活随笔為你收集整理的LeetCode题库整理【Java】—— 7整数反转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack入坑指南
- 下一篇: Java的中排序方式