Reverse Integer(反轉整型數)

2021-07-25 08:10:26 字數 1755 閱讀 1753

reverse digits of an integer.(反轉乙個整型數)

example1: x = 123, return 321

example2: x = -123, return -321

1.個人分析

思路一:整型數轉字串->反轉字串->字串轉整型

思路二:數學解法,不斷地進行整除和取餘運算。

2.個人解法

(1)

int

reverse(int x)

//整型轉字串並反轉字串

string str= to_string((long

long)x);

string rstr;

string::reverse_iterator rit=str.rbegin();

for(; rit != str.rend(); ++rit)

rstr.push_back(*rit);

//將字串轉換為整型

long

long res;

istringstream iss(rstr);

iss >>res;

//溢位處理

if(res > int_max || res < int_min)

return

0; return res * sign;

}

(2)

int

reverse(int x)

long

long res = 0;

string str = to_string((long

long)x);

for(string::reverse_iterator rit=str.rbegin(); rit != str.rend(); ++rit)

if(res > int_max || res < int_min)

return

0; return res * sign;

}

3.參考解法

(1)

int

reverse(int x)

return (res > int_max || res < int_min) ? 0 : (int)res;

}

(2)

class

solution

(object):

defreverse

(self, x):

""" :type x: int

:rtype: int

"""

s = cmp(x, 0) #x > 0,s=1; x < 0,s=-1

r = int(`s*x`[::-1]) #先將字串反轉,然後將字串轉換為整型

return s*r * (r < 2**31) #r < 2**31為真時返回1,否則返回0;2**31表示2的31次方

該解法使用python實現,只用了三行**,思路是和思路一類似的。

4.總結

該題比較簡單,但需注意處理溢位的情況。另外前兩種解法是基於字串操作實現的,沒有數學解法簡潔,但提供了乙個比較常用的字串與整型之間相互轉換的方式。

ps:

Reverse Integer演算法題

注意有符號的32bits整數的範圍 return reservation else 之前一直在思考如果給你乙個大整數,如何把這個給定的大整數分解成乙個乙個的數字。後來做了這道題給我很大的啟發。因為我開始的想法是想把這個數轉換成字串的方法來實現這道題的。其實要把乙個大整數拆分成乙個個數隻需要用到取餘 ...

演算法系列 Reverse Integer

reverse digits of an integer.example1 x 123,return 321 example2 x 123,return 321 note the input is assumed to be a 32 bit signed integer.your function...

Reverse Integer 旋轉數字

reverse digits of an integer.example1 x 123,return 321 example2 x 123,return 321 本地注意正負號判斷比較關鍵,實現部分可能不是最優的,按照自己的想法實現 設ret 1 每次對x進行取餘mod,然後ret ret 10 m...