力扣刷題記錄 字串 簡單 819最常見的單詞

2021-09-26 22:36:27 字數 1960 閱讀 4096

給定乙個段落 (paragraph) 和乙個禁用單詞列表 (banned)。返回出現次數最多,同時不在禁用列表中的單詞。題目保證至少有乙個詞不在禁用列表中,而且答案唯一。

禁用列表中的單詞用小寫字母表示,不含標點符號。段落中的單詞不區分大小寫。答案都是小寫字母。

說明:1 <= 段落長度 <= 1000.

1 <= 禁用單詞個數 <= 100.

1 <= 禁用單詞長度 <= 10.

答案是唯一的, 且都是小寫字母 (即使在 paragraph 裡是大寫的,即使是一些特定的名詞,答案都是小寫的。)

paragraph 只包含字母、空格和下列標點符號!?』,;.

不存在沒有連字元或者帶有連字元的單詞。

單詞裡只包含字母,不會出現省略號或者其他標點符號。

輸入:paragraph = 「bob hit a ball, the hit ball flew far after it was hit.」

banned = [「hit」]

輸出: 「ball」

解釋:「hit」 出現了3次,但它是乙個禁用的單詞。

「ball」 出現了2次 (同時沒有其他單詞出現2次),所以它是段落裡出現次數最多的,且不在禁用列表中的單詞。

注意,所有這些單詞在段落裡不區分大小寫,標點符號需要忽略(即使是緊挨著單詞也忽略, 比如 「ball,」),

"hit"不是最終的答案,雖然它出現次數更多,但它在禁用單詞列表中。

class

solution

: def mostcommonword

(self, paragraph: str, banned: list[str])-

> str:

# 將大寫全部轉換為小寫

para = paragraph.

lower()

# 將標點符號轉換為空格,便於後續拆分單詞

para = para.

replace

("!"

," "

) para = para.

replace

("?"

," "

) para = para.

replace

("'"

," "

) para = para.

replace

(","

," "

) para = para.

replace

(";"

," "

) para = para.

replace

("."

," "

)

words = para.

split

(" "

)

# 統計paragraph中的單詞及其數量

counts =

dict()

for word in words:

# 將標點符號轉換為空格後,可能會出現連續空格,這時用split

(" "

)劃分後,會出現空串

if word !="":

if word not in counts.

keys()

: counts[word]=0

counts[word]+=1

max_count =

0 max_count_word =

""for word, count in counts.

items()

:if word not in banned:

if count>max_count:

max_count = count

max_count_word = word

return max_count_word

力扣刷題記錄 字串 簡單 859親密字串

給定兩個由小寫字母構成的字串 a 和 b 只要我們可以通過交換 a 中的兩個字母得到與 b 相等的結果,就返回 true 否則返回 false 輸入 a ab b ba 輸出 true 輸入 a ab b ab 輸出 false 輸入 a aa b aa 輸出 true 輸入 a aaaaaaabc...

力扣刷題記錄 字串 簡單 551學生出勤記錄 I

給定乙個字串來代表乙個學生的出勤記錄,這個記錄僅包含以下三個字元 如果乙個學生的出勤記錄中不超過乙個 a 缺勤 並且不超過兩個連續的 l 遲到 那麼這個學生會被獎賞。請需要根據這個學生的出勤記錄判斷他是否會被獎賞。輸入 ppallp 輸出 true 輸入 ppalll 輸出 false class ...

力扣刷題記錄 字串 簡單 20有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 注意空字串可被認為是有效字串。輸入 輸出 true 輸入 輸出 true 輸入 輸出 false 輸入 輸出 false 輸入 輸出 true 參考官方解答,利用棧 class solution object def isvalid self...