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

思路

  • 利用餘數來解

    • 第一次取出來的餘數,剛好會是翻轉後的第一個數字

  • 32bit要如何處理

程式碼

class Solution {
    func reverse(_ x: Int) -> Int {
      var y = x
      var result = 0
      // 注意while條件
      while (y > 0) {
        // 第一次取出來的餘數,會因為while loop乘上最多次的10,變成第一個數字
        result = 10 * result + y % 10 
        y /= 10
      }
      // 32bit處理
      if result > Int.max || result < Int.min {
        return 0
      }

      return result
    }
}

複雜度

時間O(n), n是X的長度,總共要進行n次的轉換,時間O(1)

Last updated

Was this helpful?