7.、Reverse Integer(整數取反)
阿新 • • 發佈:2018-12-29
題目要求很簡單,就是給定一個在[−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