剣指offer:文字列を整数に変換(Python)


タイトルの説明
文字列を整数に変換するには、文字列を使用して整数を変換できないライブラリ関数が必要です.値が0または文字列が正当な値でない場合は0を返します.
説明を入力:
数字のアルファベット記号を含む文字列を入力し、空にすることができます.
出力の説明:
正当な数値表現であれば、その数値を返します.そうでなければ0を返します.
例1
+2147483647 1a33
2147483647 0
問題を解く構想.
  • 解題時に文字列の先頭のシンボルビットを考慮する必要がある.
  • 注意:文字「0」に対応するASCIIコードは48である.得られた文字列の各文字について、そのASCIIコードを求め、48を減算すると、対応するビットの数値となる.
  • class Solution:
        def StrToInt(self, s):
            res,mult,flag = 0,1,1
            if not s:
                return res
            if s[0] == '-' or s[0] == '+':
                if s[0] == '-':
                    flag = -1
                s = s[1:]
            for i in range(len(s)-1, -1, -1):
                if '9' >= s[i] >= '0':
                    res += (ord(s[i]) - 48)*mult
                    mult = mult * 10
                else:
                    return 0
            return res*flag