题目:
原题链接: https://leetcode-cn.com/problems/string-to-integer-atoi/
解题思路:
其实没啥好说的,就是需要考虑的情况比较多
代码实现:
class Solution:
def myAtoi(self, str: str) -> int:
int_lst = [2 ** 31 - 1, 2 ** 31]
result_num, flag, sign = 0, False, 0
for curr_s in str:
if curr_s == ' ':
if not flag:
continue
else:
break
if curr_s == '-':
if not flag:
flag = True
sign = 1
continue
else:
break
elif curr_s == '+':
if not flag:
flag = True
sign = 0
continue
else:
break
if not curr_s.isdigit():
break
flag = True
curr_num = int(curr_s)
if result_num > int_lst[sign] // 10:
return int_lst[sign] if sign == 0 else int_lst[sign] * -1
elif result_num == int_lst[sign] // 10 and curr_num > int_lst[sign] % 10:
return int_lst[sign] if sign == 0 else int_lst[sign] * -1
result_num = result_num * 10 + curr_num
return result_num if sign == 0 else result_num * -1
再追加一个题解中的正则表达式解法:
class Solution:
def myAtoi(self, s: str) -> int:
return max(min(int(*re.findall('^[\+\-]?\d+', s.lstrip())), 2**31 - 1), -2**31)作者:QQqun902025048
链接:https://leetcode-cn.com/problems/string-to-integer-atoi/solution/python-1xing-zheng-ze-biao-da-shi-by-knifezhu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。