【leetcode系列】【py3】【中等】字符串转换整数 (atoi)

题目:

【leetcode系列】【py3】【中等】字符串转换整数 (atoi)

原题链接: 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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。