题目描述
方法一
我的首先想法是正则表达式,原因是这是一个从字符串中寻找符合某种要求的字符串。
class Solution(object):
def myAtoi(self, s):
"""
:type str: str
:rtype: int
"""
#引入正则化模块
import re
result = re.findall(r"^[-+]?\d+", str.strip())
#如果查找的结果的列表是空的,直接返回0
if not result:
return 0
else:
#把result list转化为字符串,然后转化为整数
integer =int(''.join(result))
#2147483647是2的31次方-1
if integer >2147483647:
return2147483647
elif integer < -2147483648:
return -2147483648
else:
return integer
Answer = Solution()
str = " -a123b"
s = Answer.myAtoi(str)
print(s)
这里给出join()函数的用法,原来代码里的语句是
‘’.join(result),就是用空字符为间隔把result这个list转化成字符串
然后int()函数把字符串换成整数
然后再重点复习一下正则表达式。
可以参考这个网址:
这里解释一下代码里的pattern。
result = re.findall(r"^[-+]?\d+", str.strip())
^…是搜索以…开头的
[-+]是要么是-号要么是+号
[-+]?是要么是-号要么是+号要么是’'空字符
\d是要求是数字
\d+是数字后面可以接任意个数字
这样就是题目要求的了
再提一嘴
str.strip()是去掉字符串中的空字符
其实做题过程中,我想到好像这种字符串是不能解决的,就是数字在字符串中有多部分
比如“ -a123b +c456d”就只能输出-123不知道有没有大佬能解决呢?