0%

Leetcode 008 String to Integer (atoi)

题目要求

实现 atoi 函数,注意考虑各种可能情况。

思路:

可以直接采用正则表达式。先去掉首尾空格,行首可以有正负号也可以没有,之后接着一个或多个数字。匹配完成后,如果超过32位整数限制,则变成32位有符号整数的最大/最小值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import re
class Solution(object):
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
str = str.strip()
match = re.findall('^([+-]?\d+).*$', str)
if match == []:
num = 0
else:
num = int(match[0])
if num >= 2 ** 31:
num = (2 ** 31) - 1
elif num <- 2 ** 31:
num =- 2 ** 31
return num