上海十大網(wǎng)站建電商網(wǎng)絡營銷
問題描述:
主管期望你來實現(xiàn)英文輸入法單詞聯(lián)想功能。
需求如下:
依據(jù)用戶輸入的單詞前綴,從已輸入的英文語句中聯(lián)想出用戶想輸入的單詞,按字典序輸出聯(lián)想到的單詞序列,如果聯(lián)想不到,請輸出用戶輸入的單詞前綴。
注意:
- 英文單詞聯(lián)想時,區(qū)分大小寫
- 縮略形式如”don’t”,判定為兩個單詞,”don”和”t”
- 輸出的單詞序列,不能有重復單詞,且只能是英文單詞,不能有標點符號
輸入描述
輸入為兩行。
首行輸入一段由英文單詞word和標點符號組成的語句str;
接下來一行為一個英文單詞前綴pre。
0 < word.length() <= 20
0 < str.length <= 10000
0 < pre <= 20
輸出描述
輸出符合要求的單詞序列或單詞前綴,存在多個時,單詞之間以單個空格分割
The furthest distance in the world, Is not between life and death, But when I stand in front of you, Yet you don't know that I love you.
f
front furthest
解題思路:
按照規(guī)則進行模擬即可:
- 區(qū)分大小寫
- 不能有標點符號包括縮略詞的" ' ":去除標點符號,單獨針對縮略詞拆分為兩個單詞
- 不能重復且字典序:將處理后的單詞加入set()集合 并 轉(zhuǎn)換成列表進行排序
- 前綴匹配:單詞的前綴部分 = 前綴
- 無法聯(lián)想到則輸出前綴
代碼實現(xiàn):
s = input().split()
target = input()
arr = set()#去重
for i in s:#去標點符號if "'" in i:t = i.index("'")arr.add(i[:t])arr.add(i[t+1:])else:temp = ''for j in i:if 'a' <= j <= 'z' or 'A' <= j <= 'Z':temp += jarr.add(temp)
arr = sorted(list(arr))#字典序排序
n = len(target)
f = True#是否存在
for i in arr:#聯(lián)想if target == i[:len(target)]:print(i,end=' ')f = False
if f:print(target)