这道题一开始的实例通过只有85%,基本上市每个pyer都会忽略的问题。

熟悉python的人都知道,python中不像java有长整型、短整型之分。python中的int是动态长度且整型(参考:https://blog.csdn.net/qq_41386300/article/details/90552723)

所以,按理来说,用python处理这道题不用考虑数值溢出的问题

思路:
①:建立 数字0-9 和字符'0'-'9'映射的字典(0-9对应的ascii码为48-57,chr(x)返回ascii码对应的字符,为str类型)
②:去除首位符号
③:遍历s,算出无符号结果值
④:分别判断当符号为+-的时候是否会出现整型溢出的异常,有则返回0,无则返回 有符号整型

# -*- coding:utf-8 -*-
class Solution:
    def StrToInt(self, s):
        # write code here
        if not s:
            return 0
        # 保存符号值,用于后边输出判断用
        ss = s[0]
        # 建立映射
        num_dict = dict(zip([chr(i) for i in range(48,58)],[i for i in range(10)]))
        s =s.lstrip('-').lstrip('+')
        count = 0
        length = len(s)
        for i in range(0,length):
            if ord(s[i])>57:
                return 0
            count += num_dict[s[i]] * 10**(length-i-1)
        if ss == '-':
            if -count <-0x80000000:
                return 0
            return -count
        if count >0x7FFFFFFF:
            return 0
        return count