难度:中级 关键词:自动机
1
题目描述
本次给定一个字符串,按照一定规则将其中字符串转换为整数。规则叙述较为繁琐,因此借用一下官方解题中的一幅图来说明规则:
2
题解
思路:自动机
上面的图就是该题目可梳理出的自动机,这个题目的难点也是如何梳理出这个自动机状态转移图。梳理出后,按照状态转移把相关规则写入代码即可。下方代码是在看官方解题前写的,因此会跟上图略微有差异,官方代码可去LeetCode网站查看。
class Solution:
def myAtoi(self, str: str) -> int:
str = str.strip()
if len(str)==0:
return 0
y=''
if str[0].isdigit():
y=y+str[0]
for i in range(1,len(str)):
if str[i].isdigit():
y=y+str[i]
else:
break
elif (str[0]=='-' or str[0]=='+') and 1<len(str) and str[1].isdigit():
y=y+str[0]
for i in range(1,len(str)):
if str[i].isdigit():
y=y+str[i]
else:
break
if len(y)>0 :
if 2**31-1>=int(y)>= -2**31:
return int(y)
elif int(y)>2**31-1 :
return 2**31-1
else :
return -2**31
else :
return 0