这道题一开始的实例通过只有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
京公网安备 11010502036488号