題目要求首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。接下來的轉化規則如下: 提示
例項
輸入: 「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 庫,也不能直接將輸入的字串轉換為整數形式。解題思路 演算...