(正则写法))
题目描述示例思路正则版正则匹配编译^\s*([-]?\d)一次性完成“去空格、取符号、读连续数字”。判空返回match从头匹配若失败无数字则返回0。转换截断提取捕获组并转整数最后与MAX/MIN比较超出范围则截断返回。解题过程正则一步到位用^\s*([-]?\d)同时完成“去空格→取符号→读数字”。^强制从开头匹配。\s*匹配任意空白空格、制表符*表示 0 个或多个。()捕获组用于提取核心内容。[-]?匹配正负号一次或零次?表示 0~1 次。\d匹配一位或多位数字表示至少 1 个遇到非数字自动停止。判空与转换match无结果则返回 0否则group(1)取出符号数字串int()转整数自动处理前导零。截断处理与2^31-1和-2^31比较超出则返回对应边界。代码class Solution: def myAtoi(self, s: str) - int: MAX 2**31-1 MIN -2**31 pattern re.compile(r^\s*([-]?\d)) m pattern.match(s) if not m: return 0 num int(m.group(1)) if num MAX: return MAX elif num MIN: return MIN else: return num结语这道题之前通过模拟做过一次这次换的是用正则方法可以凭借这道题的不同解法体会一下正则和模拟的区别。之前模拟的时间复杂度为O(n)空间复杂度为O(1)欢迎各位讨论交流