python3 坑爹的int
把字符串转换成整数
http://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e
这道题一开始的实例通过只有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