剣指offer:文字列を整数に変換(Python)
2202 ワード
タイトルの説明
文字列を整数に変換するには、文字列を使用して整数を変換できないライブラリ関数が必要です.値が0または文字列が正当な値でない場合は0を返します.
説明を入力:
数字のアルファベット記号を含む文字列を入力し、空にすることができます.
出力の説明:
正当な数値表現であれば、その数値を返します.そうでなければ0を返します.
例1
+2147483647 1a33
2147483647 0
問題を解く構想.解題時に文字列の先頭のシンボルビットを考慮する必要がある. 注意:文字「0」に対応するASCIIコードは48である.得られた文字列の各文字について、そのASCIIコードを求め、48を減算すると、対応するビットの数値となる.
文字列を整数に変換するには、文字列を使用して整数を変換できないライブラリ関数が必要です.値が0または文字列が正当な値でない場合は0を返します.
説明を入力:
数字のアルファベット記号を含む文字列を入力し、空にすることができます.
出力の説明:
正当な数値表現であれば、その数値を返します.そうでなければ0を返します.
例1
+2147483647 1a33
2147483647 0
問題を解く構想.
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