這裡要求字串的第乙個非空字元要不是正負號要不是數字,所以先把源字串的前面的空字元清空。然後在新的字串中判斷首字元是否是正負號或者數字,如果不是則直接返回。否則就計算字元對應的數值大小,在計算過程中如果發現了數字以外的字元則立即返回,因為題目中要求連續的數字字元。還需要注意的是,在返回自己計算的數值時,都需要判斷數值是否在允許範圍內。
class solution(object):
def myatoi(self, str):
""":type str: str
:rtype: int
"""num = 0
fuhao = ''
max_num = pow(2, 31) - 1
min_num = -1 * pow(2, 31)
len_s = len(str)
if len(str) == 0:
return 0
for i in range(len_s):
if str[i] == ' ':
continue
else:
break
new_str = str[i:]
len_s = len(new_str)
if len_s == 0:
return 0
start = 0
if new_str[start] == '+' or new_str[start] == '-':
fuhao = new_str[start]
start += 1
elif new_str[start] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
return 0
for i in range(start, len_s):
if new_str[i] >= '0' and new_str[i] <= '9':
temp = int(new_str[i])
num = num * 10 + temp
if len(fuhao) > 0:
if fuhao == '+':
if num >= max_num:
return max_num
else:
if -num <= min_num:
return min_num
else:
if fuhao == '-':
if -num <= min_num:
return min_num
else:
return -num
else:
if num >= max_num:
return max_num
else:
return num
if fuhao == '-':
if -num <= min_num:
return min_num
else:
return -num
else:
if num >= max_num:
return max_num
else:
return num
字串轉換整數
請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...
字串轉換整數
請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...
字串轉換整數
不需要讀入空格,因此無論左邊有多少空格直接跳過,移動str指標到第乙個不是空格的位置上。然後判斷符號位,存在三種情況 和無正負號,當沒有符號的時候不需要任何操作,當是 號時使s 1。設定flag 0 flag作用下面詳細說明 遇到其他字元,break 不是數字的字元遍歷完,逐個將數字字元轉化為整數,...