题目来自
https://leetcode-cn.com/problems/string-to-integer-atoi/
解题思路
看到这题,想到的是正则匹配偷懒,去除开头的空格,以+、-、数字开头贪婪匹配整数。
若第一个字符非+、-、数字,则匹配不到返回0
将匹配出的整数与
2
32
−
1
,
−
2
32
2^{32}-1,-2^{32}
232−1,−232比较
正则表达式中
lstrip 用于去除字符串左边的空格
^ 用于匹配字符串开头
\d 匹配数字
[] 用于匹配[]内的字符
import re
class Solution:
def myAtoi(self, str: str) -> int:
str = str.lstrip()
pattern = re.compile(r'^[\+\-]?\d+')
r = re.findall(pattern,str)
if r == []:
return 0
else:
r = int(r[0])
return min(max(r,-2**31),2**31-1)