zoukankan      html  css  js  c++  java
  • [leetcode]8. String to Integer (atoi)

    分 空白 无符号 正号 负号 无意义符号分别讨论:

    有点难看 应该写成函数分开的

    Submission Detail

    1079 / 1079 test cases passed.
    Status: 

    Accepted

    Runtime: 44 ms
    Memory Usage: 13.3 MB
    Submitted: 1 minute ago
    class Solution:
        def myAtoi(self, str: str) -> int:
            # 00  -(+) nums
            strS = len(str)
            # deal 0
            if strS == 0:  # str is empty
                return 0
            #noraml
            maxnum = 0x80000000
            for index in range(strS):
                if str[index] == ' ':  # whitespace character
                    continue
                else:
                    # min
                    if str[index] == '-':
                        if index + 1 < strS:
                            ret = ''
                            for i in range(index + 1, strS):
                                if str[i].isdigit():
                                    ret = ret + str[i]
                                else:
                                    break
                            if ret == '-' or len(ret) == 0:
                                return 0
                            if int(ret) <= maxnum:
                                return int('-' + ret)
                            else:
                                ret =0
                                ret = ret - maxnum
                                return int(ret)
                    #plus
                    if str[index] == '+':
                        if index + 1 < strS:
                            ret = ''
                            for i in range(index + 1, strS):
                                if str[i].isdigit():
                                    ret = ret + str[i]
                                else:
                                    break
                            if ret == '+' or len(ret) == 0:
                                return 0
                            if int(ret) <= maxnum:
                                return int(ret)
                            else:
                                ret =0
                                ret = maxnum -1
                                return int(ret)
                    # nosign or nomean
                    if (str[index].isdigit()):
                        ret = ''
                        for i in range(index, strS):
                            if str[i].isdigit():
                                ret = ret + str[i]
                            else:
                                break
                        if (int(ret)<=maxnum-1):
                            return int(ret)
                        else:
                            ret = maxnum - 1
                            return int(ret)
                    else:
                        return 0
            #only one blankchar
            return 0
  • 相关阅读:
    BZOJ1930 [Shoi2003]pacman 吃豆豆
    hdu5322 Hope
    hdu5390 tree
    hdu4609 3-idiots
    hdu5354 Bipartite Graph
    hdu4918 Query on the subtree
    hdu5314 Happy King
    [题解] PowerOJ 1741 最长递增子序列问题 (最大流)
    [题解] PowerOJ 1740 圆桌问题 (最大流)
    [题解] PowerOJ 1739 魔术球问题 (最大流)
  • 原文地址:https://www.cnblogs.com/alfredsun/p/10804801.html
Copyright © 2011-2022 走看看