給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
c++版本
class solution {
public:
int reverse(int x) {
int result=0;
if(x>=int_min &&x<=int_max){
while(x!=0){
int a = x%10;
x/=10;
if(result>int_max/10 || (result==int_max/10 && a>7)) return 0;
if(resultc++負數除法和取餘運算:
關於除法,不管是整數還是負數都是向0取整:
10/4=2 10/(-4)=-2負數取餘,通過取模來確定|小| % |大| = |小| 符號同前 |大| % |小| = |餘| 符號同前
3%4 = 3 ; -3%4 = -3 ; -3%-4 = -3 ; 3%-4 = 3; 5%3 = 2 ; 5%-3 = 2python除法和取模運算:;-5%-3 = -2 ; -5%3 = -2;
記住這一點即可解決c/c++的大部分情況。取餘運算時首先全取絕對值進行計算,再進行符號的判斷
正數除法:
6/4=1.5(返回是浮點數)負數除法:6//4=1(返回是整數)
6返回不是整數,其和分子分母資料型別有關係)
python3除法採取的是向下取整,即向負無窮方向取最接近精確值的整數。故當整除運算有負數時,結果稍有不同:
4//-3=-2 -10//3=-4我們通常計算中,採用的是向零取整的方法計算,4//-3 = -1,-10//3 = -3。如果希望在python3中對負數採用向零取整的方法計算,可以如下處理:int(4/-3)=-1 int(-10/3)=-3python3 中採用%表示取模運算,結果返回除法的餘數21%10=3 3%4=3但是由於python採用的是向下取整的方式,所以對負數的取餘結果不一樣:-21%10=9 -5%4=3結合前面負數的整除計算,可以理解取模的結果。-21//10 = -3, -21-(-3)*10 = 9python版本class solution:
def reverse(self, x: int) -> int:
if(x==0):
return 0
result=0
if(x>0):
while(x!=0):
result=10*result+x%10
x//=10
if(result>2**31-1):
return 0
return result
else:
x=-x
while(x!=0):
result=10*result+x%10
x//=10
if(result>2**31):
return 0
return -1*result
法二,轉換為string呼叫相關函式
if x==0:
return 0
str_x = str(x)
x = ''
if str_x[0] == '-':
x += '-'
x += str_x[len(str_x)-1::-1].lstrip("0").rstrip("-")
x = int(x)
if -2**31return x
return 0
lstrip([chars])和rstrip([chars])分別表示去掉字串左右兩邊指定的字元。
LeetCode7反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。以字串方式思考...
LeetCode 7 反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。很簡單,就是不...
leetcode 7反轉整數
隨機一題 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返...