[LeetCode]题解(python):008-String to Integer (atoi)
阅读原文时间:2020年09月20日阅读:2

题目来源:

https://leetcode.com/problems/string-to-integer-atoi/


题意分析:

这道题也是简单题,题目意思是要将字符串转化成int。比如‘123’转成123.


题目思路:

由于有一些其他的输入直接用int()函数肯定是不可以的。比如说‘123b’用int()函数肯定是报错的。那么我们可以用一个ans = 0来初始化得到的int,从第一个字符s开始判断,得到新的ans是ans = ans*10 + int(s)。题目要注意的是一些特殊情况:

1.刚开始的空格,字符开始的空格字符忽略不算;

2.‘-’和‘+’字符,第一次出现的这两个字符可以代表得到的int的正负;

3.上述情况以外的所有非‘0’-‘9’的字符,出现这些字符的时候等于出现结束符;

4.得到的ans超过32位int最大长度。

只要在代码中加上几个bool判断符,字符的一些比较和ans的大小比较一下,答案就出来了。


代码(python):

class Solution(object):
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
size = len(str)
if size == 0:
return 0
ans = 0
b = True
b1 = True
positive = True
i = 0
while i < size: if str[i] != ' ': b1 = False if str[i] == ' ' and b1: i += 1 continue if b: if str[i] =='-': positive = False i += 1 b = False continue if str[i] == '+': i += 1 b = False continue if str[i]>= '' and str[i] <= '': ans = ans*10 + int(str[i]) if ans > 2147483647 and positive:
return 2147483647
if ans > 2147483648 and not positive:
return - 2147483648
else:
break
i += 1
if positive:
return ans
return -1 * ans


转载请注明出处:http://www.cnblogs.com/chruny/p/4801655.html

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章