我的首先想法是正規表示式,原因是這是乙個從字串中尋找符合某種要求的字串。
class solution(object):
def myatoi(self, s):
""":type str: str
:rtype: int
"""#引入正則化模組
import re
result = re.findall(r"^[-+]?\d+", str.strip())
#如果查詢的結果的列表是空的,直接返回0
if not result:
return 0
else:
#把result list轉化為字串,然後轉化為整數
integer =int(''.join(result))
#2147483647是2的31次方-1
if integer >2147483647:
return2147483647
elif integer < -2147483648:
return -2147483648
else:
return integer
answer = solution()
str = " -a123b"
s = answer.myatoi(str)
print(s)
這裡給出join()函式的用法,原來**裡的語句是
『』.join(result),就是用空字元為間隔把result這個list轉化成字串
然後int()函式把字串換成整數
這裡解釋一下**裡的pattern。
result = re.findall(r"^[-+]?\d+", str.strip())
^…是搜尋以…開頭的
[-+]是要麼是-號要麼是+號
[-+]?是要麼是-號要麼是+號要麼是』'空字元
\d是要求是數字
\d+是數字後面可以接任意個數字
這樣就是題目要求的了
再提一嘴
str.strip()是去掉字串中的空字元
其實做題過程中,我想到好像這種字串是不能解決的,就是數字在字串中有多部分
比如「 -a123b +c456d」就只能輸出-123不知道有沒有大佬能解決呢?
leetcode字串轉換整數
請你來實現乙個atoi函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字元組...
LeetCode 字串轉換整數
題目描述 請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連...
leetcode 字串轉換整數 atoi
請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...