今天跟朋友交流,體會了學校的不同的教育方式,讓這幾天找不到方向的我又有了動力,一頓飯的時間,讓我知道了別人有多牛,體會到了差距。趕緊找了一道題目看的比較順眼的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 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的...