python 字符串转整数
- 思路比较简单
已经通过,思路比较简单,用到的判断比较多
1.去空格
2.空字符串直接返回
3.for 循环
4.首字母是正负号和数字进入(else返回不是字母的情况)
第二个if判断大于2**31和小于2**-31
5.return判断的是若果只有一个字母,需要判断正负号,视情况加int
def myAtoi(str):
str = str.strip()
if len(str) < 1:
return 0
end = 0
for index,i in enumerate(str):
if (i in ['-','+'] and index == 0) or i.isdigit():
end += 1
if len(str[:end]) > 9 and (int(str[:end]) > 2**31 - 1 or int(str[:end]) < -2**31):
return 2**31 - 1 if str[0] != "-" else -(2)**31
else:
if str[:end]:
return 0 if len(str[:end]) == 1 and str[:end] in ['-', '+'] else int((str[:end]))
return 0
return 0 if len(str[:end]) == 1 and str[:end] in ['-','+'] else int((str[:end]))
if __name__ == '__main__':
str = "-91283472332"
print(myAtoi(str))
2.用到了正则,比较简单
def myAtoi(str):
import re
pattern = r"[\s]*[+-]?[\d]+"
match = re.match(pattern, str)
if match:
res = int(match.group(0))
if res > 2 ** 31 - 1:
res = 2 ** 31 - 1
if res < - 2 ** 31:
res = - 2 ** 31
else:
res = 0
return res
if __name__ == '__main__':
str = "-91283472332"
print(myAtoi(str))