8. String to Integer (atoi)
"420" -> 420
"-420" -> -420
"420 hello world" -> 420
"hello world 420" -> 0
" -420 " -> -420Last updated
"420" -> 420
"-420" -> -420
"420 hello world" -> 420
"hello world 420" -> 0
" -420 " -> -420Last updated
class Solution:
def myAtoi(self, s: str) -> int:
# 空字串
if len(s) == 0:
return 0
# 都是空白
arr = list(s.strip())
if len(arr) == 0:
return 0
# 先取正、負號
sign = -1 if arr[0] == '-' else 1
# 判斷要出發點
i = 1 if arr[0] in ['+', '-'] else 0
# 開始建構答案
# 1. 如果遇到第一個不是數字的字元,while 就會停止
# 2. 如果 while 連執行都沒有執行,那答案就是 0
res = 0
while i < len(arr) and arr[i].isdigit():
res = 10 * res + int(arr[i])
i += 1
# LeetCode 才有的條件,面試中可能不會被問到
if sign == 1:
return min(res, 2**31-1)
else:
return max(-res, -2**31)