给定一个字符串,将其转换为32bit整数(考虑转换后的数超过4字节有符号数范围)
转换规则(太长了,略)
例:
"42" -> 42, "-42"->-42, "4193 with words" -> 4193, "words with 897" -> 0,
解法1:
class Solution:
def myAtoi(self, str: str) -> int:
str = str.lstrip()
if not str:
return 0
carry = str[0]
k = 1
if carry in '+-':
k = -1 if carry == '-' else 1
str = str[1:]
result = ''
for c in str:
if c.isdigit():
result += c
else:
break
rResult = 0 if not result else int(result) * k
rResult = min(max(rResult, -1 * pow(2, 31)), pow(2, 31) - 1)
return rResult
解法2(通过正则表达式来匹配满足条件的子串)
class Solution:
def myAtoi(self, str):
try:
match = re.match('\s*(?P<sign>[+-]?)(?P<val>\d*).*', str)
val = int('{s}{v}'.format(s=match.group('sign'), v=match.group('val')))
except (ValueError, AttributeError):
return 0
return min(pow(2,31)-1, val) if val > 0 else max(pow(2,31), val)