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

0008. 字符串转换整数 (atoi) #

  • 标签:数学、字符串
  • 难度:中等

题目大意 #

给定一个字符串,使其能换成一个 32 位有符号整数(类似 C / C++ 中的 atoi 函数)。需要检测有效性,无法读取返回 0。

解题思路 #

根据题意直接模拟即可。

  1. 先去除前后空格。
  2. 检测正负号。
  3. 读入数字,并用字符串存储数字结果。
  4. 将数字字符串转为整数,并根据正负号转换整数结果。
  5. 判断整数范围,并返回最终结果。

代码 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution:
    def myAtoi(self, s: str) -> int:
        num_str = ""
        positive = True
        start = 0

        s = s.lstrip()
        if not s:
            return 0

        if s[0] == '-':
            positive = False
            start = 1
        elif s[0] == '+':
            positive = True
            start = 1
        elif not s[0].isdigit():
            return 0

        for i in range(start, len(s)):
            if s[i].isdigit():
                num_str += s[i]
            else:
                break
        if not num_str:
            return 0
        num = int(num_str)
        if not positive:
            num = -num
            return max(num, -2 ** 31)
        else:
            return min(num, 2 ** 31 - 1)
本站总访问量  次  |  您是本站第  位访问者