字符串转换整数(atoi)Python解法
請你來實現(xiàn)一個?myAtoi(string s)?函數(shù),使其能將字符串轉(zhuǎn)換成一個 32 位有符號整數(shù)(類似 C/C++ 中的 atoi 函數(shù))。
函數(shù)?myAtoi(string s) 的算法如下:
讀入字符串并丟棄無用的前導(dǎo)空格
檢查下一個字符(假設(shè)還未到字符末尾)為正還是負(fù)號,讀取該字符(如果有)。 確定最終結(jié)果是負(fù)數(shù)還是正數(shù)。 如果兩者都不存在,則假定結(jié)果為正。
讀入下一個字符,直到到達(dá)下一個非數(shù)字字符或到達(dá)輸入的結(jié)尾。字符串的其余部分將被忽略。
將前面步驟讀入的這些數(shù)字轉(zhuǎn)換為整數(shù)(即,"123" -> 123, "0032" -> 32)。如果沒有讀入數(shù)字,則整數(shù)為 0 。必要時更改符號(從步驟 2 開始)。
如果整數(shù)數(shù)超過 32 位有符號整數(shù)范圍 [?231,??231?? 1] ,需要截斷這個整數(shù),使其保持在這個范圍內(nèi)。具體來說,小于 ?231 的整數(shù)應(yīng)該被固定為 ?231 ,大于 231?? 1 的整數(shù)應(yīng)該被固定為 231?? 1 。
返回整數(shù)作為最終結(jié)果。
注意:
本題中的空白字符只包括空格字符 ' ' 。
除前導(dǎo)空格或數(shù)字后的其余字符串外,請勿忽略 任何其他字符。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/string-to-integer-atoi
?
例:
輸入:s = "4193 with words" 輸出:4193 輸入:s = "words and 987" 輸出:0# 解析:正則表達(dá)式。題目要求,去除開頭的空字符,以數(shù)字或符號開頭,遇到字符就停止,后面去除。
class Solution:def myAtoi(self, s: str) -> int:return max(min(int(*re.findall('^[\+\-]?[0-9]+',s.lstrip())), 2**31 - 1), -2**31) # re.findall()正則表達(dá)式查找 # ^[\+\-]?:以正負(fù)號開頭,可要可不要 # [0-9]+:后面接數(shù)字,最少一個 # s.lstrip():去除字符串s左側(cè)的空字符 # re左上角的*:將結(jié)果列表中的元素提取出來當(dāng)做int()函數(shù)的參數(shù),注:int()函數(shù)只能有一個參數(shù) # max(), min():分別判斷有沒有出下屆和上屆總結(jié)
以上是生活随笔為你收集整理的字符串转换整数(atoi)Python解法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中span()函数的作用
- 下一篇: websocket python爬虫_p