字串 2 整數反轉

2021-09-02 04:00:29 字數 1648 閱讀 2090

給出乙個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 ...