Post

atoi

今天选的是atoi,链接 https://oj.leetcode.com/problems/string-to-integer-atoi/

下面是我的AC代码

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
33
def atoi(self, str):
    if str=='':
        return 0
    if (str.find('- ') >= 0) or (str.find('-+') >= 0) or (str.find('+-') >= 0) or (str.find('++') >= 0) or (str.find('--') >= 0):
        return 0
        
    if str[0] == '-':
        r='-0'
    else:
        r='0'
    result = 0
    for i in str.split('-'):
        for j in i.strip():
            if j=='+':
                continue
            try:
                int(j)
                r=r+j
            except:
                result = result + int(r)
                if result > 2147483647:
                    return 2147483647
                if result < -2147483648:
                    return -2147483648
                return result
        result = result + int(r)
        r='-0'
    
    if result > 2147483647:
        return 2147483647
    if result < -2147483648:
        return -2147483648
    return result 

题目是不难,规则比较坑爹

首先对于符号有不正常的限制,连续符号就返回0我觉得不符合数学观念;

其次对于负负得正的不需要。。。

不过学习到了Python在处理大数还是比较人性化的,不过此题已明说int类型,还是要注意的,反正我是被坑了

Runtime: 75 ms

This post is licensed under CC BY 4.0 by the author.