LeetCode 8

2018-10-12  本文已影响0人  Junr_0926

LeetCode 8 String to Integer (atoi)

实现atoi函数,将字符串转换为整数。该函数会忽略开始的空格,然后将后面的字符作为整数进行转换,不管正数还是负数,并且后面的多余的字符会被忽略。
发生溢出时只返回 INT_MAX(2^{31} − 1) or INT_MIN(−2^{31})
如果第一个非空白字符不是数字序列,不转换。
如果不转换,那么返回0

思路

class Solution(object):
    def myAtoi(self, str):
        """
        :type str: str
        :rtype: int
        """
        str = str.strip()
        if len(str) == 0 or (str[0] not in '+-' and not str[0].isdigit()):
            return 0
        if str[0] == '-':
            sign = -1
            str = str[1:]
        elif str[0] == '+':
            sign = 1
            str = str[1:]
        else:
            sign = 1

        ret = 0
        for s in str:
            if s.isdigit():
                ret = ret * 10 + ord(s) - ord('0')
            else:
                break
        return max(-2**31, min(sign * ret,2**31-1))

if __name__ == '__main__':
    solver = Solution()
    for i in ['42', '    -42', 'werw 12421', '214 asfas', '-32987546394424']:
        print solver.myAtoi(i)

上一篇下一篇

猜你喜欢

热点阅读