LeetCode第八題 字串轉換成數字

2021-10-08 10:32:08 字數 2000 閱讀 2173

題目要求

首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。接下來的轉化規則如下:

提示

例項

輸入: 「42」

輸出: 42

輸入: " -42"

輸出: -42

解釋: 第乙個非空白字元為 『-』, 它是乙個負號。

我們盡可能將負號與後面所有連續出現的數字組合起來,最後得到 -42 。

輸入: 「4193 with words」

輸出: 4193

解釋: 轉換截止於數字 『3』 ,因為它的下乙個字元不為數字。

輸入: 「words and 987」

輸出: 0

解釋: 第乙個非空字元是 『w』, 但它不是數字或正、負號。

因此無法執行有效的轉換。

輸入: 「-91283472332」

輸出: -2147483648

解釋: 數字 「-91283472332」 超過 32 位有符號整數範圍。

因此返回 int_min (−231) 。

# 構建自動機

class

automaton

:def

__init__

(self)

:# 標誌位

self.state =

'start'

self.flag =

1 self.number =

0 self.table =

defget_state

(self,c)

:if c ==

" ":

return

0elif c ==

"+"or c ==

"-":

return

1elif c.isdigit():

return

2else

:return

3def

get_number

(self,c)

: self.state = self.table[self.state]

[self.get_state(c)

]if self.state ==

'cycle_number'

: self.number = self.number *10+

int(c)

self.number =

min(self.number,int_max)

if self.flag ==

1else

min(self.number,

-int_min)

# 取絕對值小的那乙個

elif self.state ==

'sign'

: self.flag =

1if c ==

"+"else-1

class

solution

:def

myatoi

(self,

str:

str)

->

int:

auto = automaton(

)for c in s :

auto.get_number(c)

return auto.flag * auto.number

leetcode刷題 字串

給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true 示例 2 輸入 s rat t car 輸出 false 說明 你可以假設字串只包含小寫字母。高階 如果輸入字串包含 unicode 字元怎麼辦?你能否...

leetcode刷題 字串 反轉字串

給定乙個字串 s 和乙個整數 k,你需要對從字串開頭算起的每隔 2k 個字元的前 k 個字元進行反轉。如果剩餘字元少於 k 個,則將剩餘字元全部反轉。如果剩餘字元小於 2k 但大於或等於 k 個,則反轉前 k 個字元,其餘字元保持原樣。示例 輸入 s abcdefg k 2 輸出 bacdfeg 該...

LeetCode 第415題 字串相加

給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注意 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。解題思路 演算...