LeetCode String to Integer


LeetCode解題のString to Integer
原題
文字列をintタイプに変換します.タイトルは非常に簡単ですが、以下の文字列の処理:「+123」、「-23」、「231 ji 2」、null」など、追加の考慮要因が非常に多いです.
注意点:
  • 文字列は、空の
  • である可能性があります.
  • 文字列はすべてスペース、または前後にスペースがある可能性があります
  • プラスマイナス
  • を考慮する
  • 32ビット整数に対して
  • がオーバーフローするか否かを考慮する.
  • 数字ではない文字を考慮し、頭文字が数字でない場合は0を返し、文字列の中のそれとそれ以降の文字はすべて
  • を無視する.
  • 異常は全て0
  • に戻る.
    例:
    入力:str="+123"出力:123
    入力:str="-123 fe 2"出力:-123
    問題を解く構想.
    この問題はすべての状況をよく考えてからとても簡単で、特にPythonでオーバーフローを処理するのはとても便利です.
    ACソース
    class Solution(object):
        def myAtoi(self, str):
            """ :type str: str :rtype: int """
            INT_MAX = 2147483647
            INT_MIN = -2147483648
            # Check None situation
            if not str:
                return 0
            # Check only whitespace situation
            str = str.strip()
            if not str:
                return 0
            flag = 1
            if str[0] in ['+', '-']:
                if str[0] == '-':
                    flag = -1
                str = str[1:]
            # Check "+","-" situation and the first char is not number
            if not str or not str[0].isdigit():
                return 0
            # Ignore all char after the first no-number char
            for i, v in enumerate(str):
                if not v.isdigit():
                    str = str[:i]
                    break
            result = 0
            for v in str[:]:
                result += ord(v) - ord('0')
                result *= 10
            result /= 10
            result *= flag
            if result > INT_MAX:
                return INT_MAX
            if result < INT_MIN:
                return INT_MIN
            return result
    
    
    if __name__ == "__main__":
        assert Solution().myAtoi(" -1123") == -1123
        assert Solution().myAtoi("222222222222222") == 2147483647

    私のGithub(https://github.com/gavinfish/LeetCode-Python)を使用して、関連するソースコードを取得します.