字串轉換整數 atoi

2021-10-23 15:39:10 字數 1916 閱讀 6599

今天跟朋友交流,體會了學校的不同的教育方式,讓這幾天找不到方向的我又有了動力,一頓飯的時間,讓我知道了別人有多牛,體會到了差距。趕緊找了一道題目看的比較順眼的leetcode題。一看要求,怎麼這麼簡單,結果提交了5次才通過,我真的是太飄了。

丟棄無用的開頭空格字元,直到尋找到第乙個非空格字元為止若第乙個為 『+』 或 』 - 』 時,將該符號與之後面盡可能多的連續數字字元組合起來,形成乙個有符號整數。若第乙個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成乙個整數。若字串在有效的整數部分後存在其他多餘的字元,忽略這些字元在任何情況下,若函式不能進行有效的轉換時,返回 0 。要求數值範圍為 [−2^31, 2^31 − 1]。如果數值超過這個範圍,請返回 int_max (231 − 1) 或 int_min (−231) 。若第乙個非空格字元不是乙個有效整數字元、字串為空或字串僅包含空白字元時,則你的函式不需要進行轉換,即無法進行有效轉換,返回0。

因為字太多,我直接看的示例,導致我很多情況沒有考慮到,其實上面規則說的很清楚。

輸入: 「42」

輸出: 42

輸入: " -42"

輸出: -42

輸入: 「4193 with words」

輸出: 4193

輸入: 「words and 987」

輸出: 0

輸入: 「-91283472332」

輸出: -2147483648

解釋: 數字 「-91283472332」 超過 32 位有符號整數範圍。

因此返回 int_min (−231) 。

class

solution

:def

myatoi

(self,

str:

str)

->

int:

# 去掉左邊的空格

x =str.lstrip(

)if x:

temp =

''if x[0]

=='-'

or x[0]

=='+'

or x[0]

.isdigit():

temp += x[0]

for i in

range(1

,len

(x))

:if x[i]

.isdigit():

temp = temp+x[i]

else

:break

if temp ==

'-'or temp==

'+':

return

0elif

int(temp)

<(-

2**31)

:return-2

**31

elif

int(temp)

>2**

31-1:

return2**

31-1else

:return

int(temp)

else

:return

0else

:return

0# 例項化乙個物件

m = solution(

)# 輸入要檢測的字串

print

(m.myatoi(

'1378jdjhswf'

))

字串轉換整數 atoi

請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...

字串轉換整數 atoi

首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。該字串除了有效的整數部分之後也可能...

字串轉換整數 atoi

規則 請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的...