# 8. String to Integer (atoi)
###### tags: `leetcode` `8` `medium`
## :memo: Question
題目很多字自己去看。
## :memo: leetcode solution
* :medal: **思考一**: 題目我覺得就是單純的邏輯判斷,要看仔細題目給你的邏輯,考細心程度,我也是 submit 兩次才成功。
```python=
class Solution:
def myAtoi(self, s: str) -> int:
if not s or (s[0] != '+' and s[0] != '-' and s[0] != ' ' and not s[0].isdigit()):
return 0
stack = []
for i in s:
if i == ' ' and not stack:
continue
elif i == '+' and not stack:
stack.append(i)
elif i == '-' and not stack:
stack.append(i)
elif i.isdigit():
stack.append(i)
else:
break
if not stack or (len(stack) == 1 and not stack[0].isdigit()):
return 0
if -(2**31) < int("".join(stack)) < 2**31-1:
return int("".join(stack))
elif int("".join(stack)) <= -(2**31):
return -(2**31)
else:
return 2**31-1
```
## :memo: bigO
* 時間複雜度: 最差就是 O(s)
* 空間複雜度: 最差就是 O(s)