1. 程式人生 > >7.、Reverse Integer(整數取反)

7.、Reverse Integer(整數取反)

題目要求很簡單,就是給定一個在[−2^31, 2^31 − 1]範圍內的整數,對該整數取反。
比如,
輸入=123, 輸出=321。
輸入=-123,輸出=-321。
輸入=120, 輸出=21。

這個題目在求解的時候,需要注意的是資料型別的選取,因為涉及到溢位,其次當輸出結果產出範圍後,結果要變為0。在編寫程式碼的時候,因為忘記了移位符號和運算子的優先順序順序,卡了一下,剛好當天晚上在看《深入理解計算機系統》時候,看到這個知識點,移位符的優先順序是低於運算子的。在python中是不需要考慮資料型別的,程式碼如下所示:

C++:

@by_chandepire
    int reverse(int
x) { long long result=0; long long max = ((long long)1<<31)-1; long long min = 0 - (1 << 31); while(x) { result = result * 10 + x % 10; x = x /10; } return result>max || result < min?0:result; }

python:

@by_chandepire
def reverse(self, x): """ :type x: int :rtype: int """ result = 0 min = -(1<<31) max = (1<<31) - 1 flag = 1 if x < 0: flag = -1 x = -x while x: result = result*10 + x % 10
x = x / 10 if result < min or result > max: return 0 else: return result*flag