---
# System prepended metadata

title: '[algorgithm][leetcode]007 - Reverse Integer'
tags: [leetcode, algorhithm]

---

# [algorgithm][leetcode]007 - Reverse Integer

###### tags: `algorhithm`,`leetcode`

題目說明:
>https://leetcode.com/problems/reverse-integer/
>Reverse digits of an integer.
>#Example1: x = 123, return 321
>#Example2: x = -123, return -321


> *python程式碼來源:
> https://play.google.com/store/apps/details?id=com.machinelearningforsmallbusiness.leetcodepython&hl=en_US
> 其餘版本皆改寫自此app的程式碼



### python

```python=
# From Leetcode Python android app

# https://leetcode.com/problems/reverse-integer/
# Reverse digits of an integer.
# Example1: x = 123, return 321
# Example2: x = -123, return -321

# Repeatedly multiply previous result by 10 and add last digit.
# Time - O(n) where n is the number of digits.
# Space - O(n), same number of digits in output as input.

def reverse(x):
    """
    :type x: int
    :rtype: int
    """
    negative = x < 0    # record if negative and change to positive
    x = abs(x)
    reversed = 0

    while x != 0:
        reversed = reversed * 10 + x % 10
        x //= 10

    if reversed > 2**31 - 1:    # required to pass leetcode test cases, not applicable for python
        return 0
    return reversed if not negative else -reversed

print(reverse(-123)) #-321
```


### javascript
```javascript=
function reverse(n){
       
    is_negative= n < 0 ? true:false
    
    n = Math.abs(n)
        
    result=0
    
    
    while(n!=0){
        result = result * 10 + n % 10
        n = Math.floor(n/10)
    }
    
    // required to pass leetcode test cases
    if(result > Math.pow(2,31)-1 ){
        return 0
    }
    
    return is_negative? -result : result
}


print(reverse(-123))

```

### Ruby
```ruby=
def reverse(n)
    
    is_negative=false
    is_negative = n < 0 ? true : false
    
    n=(n).abs #取絕對值
    result=0
    
    while n!=0
        result = result*10 + n % 10
        
        #ruby語言特性,整數互除可直接取得商數
        n =n / 10 
    end
    
    # required to pass leetcode test cases
    if result > 2**32-1
        return 0
    end
    
    
    
    if is_negative
        return -result
    else
        return result
    end
    
end


p reverse(-123)
```