一、思路
先确定好会有几种状态(空格,正负号,数字,其他),每种状态在什么情况下会转移到那种状态,如下图。然后照着下图建立个状态转移表即可。
二、代码
1.python
代码如下:
class Atoi(object):
def __init__(self):
self.ans = 0
self.state = 'start'
self.sign = 1
self.table = {
'start':['start','sign','number','end'],
'sign':['end','end','number','end'],
'number':['end','end','number','end'],
'end':['end','end','end','end']
}
def get_state(self,c):
if c.isspace():
return 0
elif c =='+'or c =='-':
return 1
elif c.isdigit():
return 2
else:
return 3
def get(self,c):
self.state = self.table[self.state][self.get_state(c)]
if self.state =='number':
self.ans = self.ans*10 + int(c)
self.ans = min(self.ans,2**31-1) if self.sign == 1 else min(self.ans,2**31)
elif self.state == 'sign':
self.sign = 1 if c=='+' else -1
class Solution:
def myAtoi(self, s):
ato = Atoi()
for c in s:
ato.get(c)
return ato.sign * ato.ans