神奇的詞根
問題:
字典為[「cat」,「bat」,「rat」],句子為"the cattle was ralled by the battery",經過替換,輸出句子為"the cat was by the bat「。
解決:
首先建立兩個字典,並做好初始化工作。在建立字典時我們使用collections.defaultdict()建立乙個預設字典,它本身是乙個字典,只不過python會自動為他的鍵賦乙個初始值。
接下來,以每乙個詞根的首字母為鍵,把每乙個詞根放到鍵所對應的值中去,這裡的值是乙個集合(set),同時記錄下該首字母所對應的詞根的最大長度是多少,這樣一來,之後對比單詞的字首時,只需要看這個最大長度即可。
字典建立好以後,首先把每個單詞拿出來,查詢以單詞開頭的詞根是否能夠和這個單詞匹配,s字典 裡記錄了以某個字母開頭的詞根的最大長度,從第一位開始擷取一直擷取到最大長度,如果發現這個子字串確實是乙個詞根的話,則修改單詞,並結束該輪迴圈。為了方便記錄下表和讀取單詞,使用enumerate()函式來遍歷句子,它會把索引放到第乙個變數,把元素放到第二個變數。
最後通過字串的join方法連線各個單詞即可。
源**:
#神奇的詞根
from collections import defaultdict
defreplacewords
(dict
,sentence)
: d = defaultdict(
set)
s = defaultdict(
int)
sentence = sentence.split(
)for w in
dict
:print
(w[0])
d[w[0]
].add(w)
s[w[0]
]=max(s[w[0]
],len(w)
)for i,w in
enumerate
(sentence)
:for j in
range
(s[w[0]
]):if w[
:j+1
]in d[w[0]
]:sentence[i]
= w[
:j+1
]break
return
' '.join(sentence)
動態規劃之神奇的口袋
有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n 1 n 20 個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的...
上帝的傑作系列之 神奇的數
這一次,讓我們體驗數9801的奇妙。1.祂是最大的兩位數的平方,9801 99 99 2.祂是乙個五角形數,什麼是五角形數呢?如圖所示 用通項公式表示,第n個五角形數等於 3.再計算一下9801的倒數 1 9801 0.000102030405060708091011121314151617 似乎很...
Jquery基礎教程之神奇的
這個玩意其實是乙個jquery封裝的功能非常強大的函式,當然,強大的東東,在使用起來也必然會是有點複雜的咯。下面我們來看它的一些強大的用法 expr 這個函式可以通過css選擇器 xpath html 來匹配目標元素,返回的是乙個jquery物件,jquery的所有操作都是以此為基石的。下面來看 h...