您的位置:首页 > 编程语言 > Python开发

LeetCode题解(python)-8. 字符串转换整数

2019-03-07 13:47 591 查看
版权声明:转载请注明出处,谢谢 https://blog.csdn.net/zysps1/article/details/88299518

LeetCode题解(pyhon)

8. 字符串转换整数 (atoi)

题目描述:

在任何情况下,若函数不能进行有效的转换时,请返回 0。

说明:

假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,qing返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例 1:

输入: "42"
输出: 42

示例 2:

输入: "   -42"
输出: -42
解释: 第一个非空白字符为 '-', 它是一个负号。
我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。

示例 3:

输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。

示例 4:

输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正、负号。
因此无法执行有效的转换。

示例 5:

输入: "-91283472332"
输出: -2147483648
解释: 数字 "-91283472332" 超过 32 位有符号整数范围。
因此返回 INT_MIN (−231) 。

解题心得:

本题的算法思想并不难

难点在于把题目中每一个判定条件“安排”进程序里

用一个数组存储摘出来的数字即可

时间复杂度为

O(log(n))
,其中
n=len(nums)
,
nums
也即输出的数字的长度。

解题代码:

class Solution:
def myAtoi(self, str: str) -> int:
strr = str
sym = 1
num = ''
strr = strr.strip()
if len(strr) == 0:
return 0
if strr[0] == '+' and len(strr)==1:
return 0
if strr[0] == '-' and len(strr)==1:
return 0
if strr[0] == '+':
sym = 1
elif strr[0] == '-':
sym = -1
elif strr[0] >= '0' and strr[0] <= '9':
num = num+strr[0]
else:
return 0
for i in range(1,len(strr)):
if strr[i] >= '0' and strr[i] <= '9':
num = num + strr[i]
else:
break
if len(num)==0:
return 0
num = int(num)
nums = num*sym
if nums>=-pow(2,31) and nums<=(pow(2,31)-1):
return nums
elif nums < -pow(2,31):
return -pow(2,31)
elif nums > pow(2,31)-1:
return pow(2,31)-1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: