思路: 1 首先去除空白符,然後判斷字元是否為空,為空(當原字串是空或者全空格符),返回0
2若第乙個非空字元為+-號:
if只有乙個字元 或者 第二個字元不是數字,返回0 (這裡邏輯要注意 :這裡面or的邏輯是 只有乙個字元 or 有2個字元且第二個字元不為數字)
else:遍歷字串,若當前字元是整數,加入res中
否則跳出迴圈
判斷res是否在有效數字範圍內
3若第乙個數字為數字:判斷過程與上面相似
4若第乙個數字既不是+-號也不是數字,返回0
class solution:
def myatoi(self, str):
""":type str: str
:rtype: int
"""j=0
for i in range(len(str)):
if str[i]==' ':
j=j+1
else:
break
str=str[j:]
if str=='':
return 0
elif (str[0]=='-') or (str[0]=='+'):
res=str[0]
if (len(str)<2 or (str[1] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])):
return 0
else:
for i in range(1,len(str)):
if str[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
break
res=res+str[i]
if (int(res)>=-2147483648)& (int(res)<=2147483647):
return int(res)
else:
if int(res)>0:
return 2147483647
else:
return -2147483648
elif str[0] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
res=str[0]
for i in range(1,len(str)):
if str[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
break
res=res+str[i]
if (int(res)>=-2147483648)& (int(res)<=2147483647):
return int(res)
else:
if int(res)>0:
return 2147483647
else:
return -2147483648
else:
return 0
LeetCode 8 字串轉換整數
題目描述 請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連...
leetcode 8 字串轉換整數
請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...
Leetcode 8 字串轉換整數
仔細點比啥都強。提交錯誤9次的我如是說到。步驟如下 1.清除空格 2.判斷正負號,以及是不是以字母開頭。3.讀取數字,判斷是否超過int的邊界。在判斷邊界時,可以先將數字存在long型別中來和int max int min比較,最後轉化為int型返回。但是題幹不允許。qaq class soluti...