LeetCode第八題 Python版本

2021-10-14 23:05:31 字數 2583 閱讀 1771

title: leetcode no.8

categories:

tags:

又是辛勤勞動的一天呢qwq。

請你來實現乙個 atoi 函式,使其能將字串轉換成整數。

首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。接下來的轉化規則如下:

如果第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字字元組合起來,形成乙個有符號整數。

假如第乙個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成乙個整數。

該字串在有效的整數部分之後也可能會存在多餘的字元,那麼這些字元可以被忽略,它們對函式不應該造成影響。

假如該字串中的第乙個非空格字元不是乙個有效整數字元、字串為空或字串僅包含空白字元時,則你的函式不需要進行轉換,即無法進行有效轉換。

在任何情況下,若函式不能進行有效的轉換時,請返回 0 。

注意:本題中的空白字元只包括空格字元 』 』 。

假設我們的環境只能儲存 32 位大小的有符號整數,那麼其數值範圍為 [−231,  231 − 1]。如果數值超過這個範圍,請返回  231 − 1 或 −231 。

示例 1:

輸入: "42"

輸出: 42

示例 2:

輸入: " -42"

輸出: -42

解釋: 第乙個非空白字元為 '-', 它是乙個負號。

我們盡可能將負號與後面所有連續出現的數字組合起來,最後得到 -42 。

示例 3:

輸入: "4193 with words"

輸出: 4193

解釋: 轉換截止於數字 '3' ,因為它的下乙個字元不為數字。

示例 4:

輸入: "words and 987"

輸出: 0

解釋: 第乙個非空字元是 'w', 但它不是數字或正、負號。

因此無法執行有效的轉換。

示例 5:

輸入: "-91283472332"

輸出: -2147483648

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

因此返回 int_min (−231) 。

0 <= s.length <= 200

s 由英文本母(大寫和小寫)、數字、' '、'+'、'-' 和 '.' 組成

class solution(object):

# 判斷是否為數字

def isnum(self,s):

if s == '0' or s == '1' or s == '2' or s == '3' or s == '4' or s == '5' or \

s == '6' or s == '7' or s == '8' or s == '9':

return true

else:

return false

# 丟棄開頭空白字元

def deletekong(self,s):

index = 0

for i in range(len(s)):

if s[i] != ' ':

index = i

break

s = s[index:]

return s

def myatoi(self, s):

""":type s: str

:rtype: int

"""s = self.deletekong(s)

flag = false # 正負標誌

if len(s) == 0:

return 0

if len(s) == 1 and s[0] == '-':

return 0

if len(s) == 1 and s[0] == '+':

return 0

if s[0] == '-' or s[0] == '+':

if s[0] == '-':

flag = true

else:

flag = false

s = s[1:]

if self.isnum(s[0]):

result = ''

for i in range(len(s)):

if self.isnum(s[i]):

result += s[i]

else:

break

result = int(result)

if result < -(2**31) or result > (2**31)-1:

if flag:

return -(2**31)

else:

return (2**31)-1

else:

if flag:

return -1*result

else:

return result

else:

return 0

if __name__ == '__main__':

s = solution()

print(s.myatoi('2147483648'))

回歸第八題

無向圖縮點,不知道為啥我寫tarjan就是過不了 注意最後一定要把縮點後的大小按照從大到小開始刪邊 比如說你刪4條,在乙個環中可以另外得到3個分量,但是如果放在兩個環裡面分別為刪兩邊,則總和只能得到2個分量 我的 只能過80的點 我真的盡力了,現在晚上1.55我困得喲死 includeusing n...

專題三 第八題

1.題目編號 1016 2.簡單題意 在乙個無限大的二維平面中,要求 1.每步只能移動乙個格 2.不能向後走 3.走過的格仔不能再走第二遍 由此求出走n次不同的方案數。3.解題思路形成過程 我先在稿紙上畫了畫走一步 走二步 走三步 走四步的不同方案數,分別為 3,7,17,41 猛的看並不能看出規律...

Leetcode滑動視窗四題小結(Python)

這種型別的題就是模板題,以後套模板就行了。需要注意的幾個地方在注釋中給出。3.無重複字元的最長子串 中等題點評 這個題過於簡單,以至於模板整體結構都被改掉了,想看模板的建議從下面開始看。class solution def lengthoflongestsubstring self,s str in...