LeetCode 7. 反轉整數(Reverse Integer)


 

題目描述

 

給定一個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

假設我們的環境只能存儲 32 位有符號整數,其數值范圍是 [−231,  231 − 1]。根據這個假設,如果反轉后的整數溢出,則返回 0。

 

解題思路

 

反轉整數的思路是從一個數的最后一位開始,依次向前遍歷,每次反轉整數依次左移一位,並取出一位數作為新數的末位數。具體而言首先定義反轉以后的數res初始為0,當x不為0時循環:

  • 記錄temp=res*10+x%10,此時temp即為遍歷到當前位之前的反轉整數
  • 然后比較temp/10與res是否相等,如果整數不溢出顯然相等,否則說明反轉后的整數溢出,直接返回0
  • 最后把temp賦值給res,並令x=x/10,即去掉最后一位,繼續反轉之前的數字

 

代碼

 

 1 class Solution {
 2 public:
 3     int reverse(int x) {
 4         int res = 0;
 5         while(x){
 6             int temp = res * 10 + x % 10;
 7             if(temp / 10 != res)
 8                 return 0;
 9             res = temp;
10             x /= 10;
11         }
12         return res;
13     }
14 };

 


免責聲明!

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



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