請設計乙個類,使該類的建構函式能夠接收乙個單詞列表。然後再實現乙個方法,該方法能夠分別接收兩個單詞 word1 和 word2,並返回列表中這兩個單詞之間的最短距離。您的方法將被以不同的引數呼叫多次。
示例:假設 words = ["practice", "makes", "perfect", "coding", "makes"]
輸入: word1 = 「coding」, word2 = 「practice」
輸出: 3
輸入: word1 = "makes", word2 = "coding"
輸出: 1
注意:你可以假設 word1 不等於 word2, 並且 word1 和 word2 都在列表裡。
思路:這題比上一題多出來的考慮是這次我們的方法將被以不同的引數呼叫多次,所以不能暴力解題了,可以用dict儲存單詞和對應的下標,這樣呼叫shortest的時候,就只需要處理dict中word1和word2的記錄即可。
class worddistance(object):
def __init__(self, words):
from collections import defaultdict
self.words = words
self.dict= defaultdict(list)
for i, word in enumerate(words):
def shortest(self, word1, word2):
res = float('inf')
for l1 in self.dict[word1]:
for l2 in self.dcit[word2]:
res = min(res, abs(l1 - l2))
return res
244 最短單詞距離 II
題目描述 請設計乙個類,使該類的建構函式能夠接收乙個單詞列表。然後再實現乙個方法,該方法能夠分別接收兩個單詞 word1 和 word2,並返回列表中這兩個單詞之間的最短距離。您的方法將被以不同的引數呼叫 多次。示例 假設 words practice makes perfect coding ma...
最長最短單詞
描述 輸入1行句子 不多於200個單詞,每個單詞長度不超過100 只包含字母 空格和逗號。單詞由至少乙個連續的字母構成,空格和逗號都是單詞間的間隔。試輸出第1個最長的單詞和第1個最短單詞。輸入一行句子。輸出兩行輸出 第1行,第乙個最長的單詞。第2行,第乙個最短的單詞。樣例輸入 i am studyi...
最長最短單詞
21 最長最短單詞 總時間限制 1000ms 記憶體限制 65536kb 描述輸入1行句子 不多於200個單詞,每個單詞長度不超過100 只包含字母 空格和逗號。單詞由至少乙個連續的字母構成,空格和逗號都是單詞間的間隔。試輸出第1個最長的單詞和第1個最短單詞。輸入一行句子。輸出兩行輸出 第1行,第乙...