給出乙個32位的有符號整數,將這個整數中每位上的數字進行反轉。
注意:假設我們的環境只能儲存32位有符號整數,其數值範圍是[-231, 231-1 ]。根據這個假設,如果反轉後的整數溢位,則返回0。
示例1:
輸入: 123
輸出: 321
示例2:
輸入: -123
輸出: -321
示例3:
輸入: 120
輸出: 21
解法1:
思路:建立乙個列表,將數字轉換成字串存入列表;
若末位為0,反向遍歷列表,找到不為0的數字之後,保留它前面的所有數;
進行反**若為負數,則對除首位的數反轉,再補上負號;否則直接反轉;
將列表中的字串合併成乙個字串,再轉成數字;
最後判斷是否溢位,若沒有,則返回數字,否則返回0。
class
solution
:def
reverse
(self, x)
: nums =
list
(str
(x))
for i in
range
(len
(nums)-1
,0,-
1):if nums[i]!=0
: nums = nums[
:i+1
]break
if nums[0]
=='-'
: nums = nums[:0
:-1]
nums.insert(0,
'-')
else
: nums = nums[::
-1] num =
int(
''.join(nums))if
-2**31
< num <2**
31-1:
return num
return
0
解法2:
數學方法
class
solution
:def
reverse
(self, x)
: result =
0 flag =
0if x <0:
flag =
1 x =
-x while x:
a = x %
10 result = result *
10+ a
x = x //
10if
(result >2**
31-1)
or(flag ==
1and result >2**
31):return
0else
:if flag:
return
-result
return result
反轉字串2
反轉字串2 給定乙個字串 s 和乙個整數 k,你需要對從字串開頭算起的每隔 2k 個字元的前 k 個字元進行反轉。如果剩餘字元少於 k 個,則將剩餘字元全部反轉。如果剩餘字元小於 2k 但大於或等於 k 個,則反轉前 k 個字元,其餘字元保持原樣。示例 輸入 s abcdefg k 2 輸出 bac...
LeetCode 字串 整數反轉 c
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 2 312 231,2 312 231 1 ...
字串反轉
據說一道微軟的面試題,要求考慮時間和空間的優化,下面給出幾種通常字串反轉的方法 1 直接陣列操作 char strreverse char str return str 這種做法原來的str沒有儲存,原來的str也改變了 2 指標操作 char strreverse char str return ...