給定一個單詞列表,我們將這個列表編碼成一個索引字符串 S 與一個索引列表 A。
例如,如果這個列表是 [“time”, “me”, “bell”],我們就可以將其表示爲 S = “time#bell#” 和 indexes = [0, 2, 5]。
對於每一個索引,我們可以通過從字符串 S 中索引的位置開始讀取字符串,直到 “#” 結束,來恢復我們之前的單詞列表。
那麼成功對給定單詞列表進行編碼的最小字符串長度是多少呢?
input:
輸入僅一行,包含多個單詞,之間用逗號分隔
output:
輸出一個整數,表示對給定單詞列表進行編碼的最小字符串長度
eg: Input: time,me,bell Output: 10
# 單詞的壓縮編碼
num_list = input().split(',')
n_set = set(num_list) # {}
for word in num_list:
for i in range(1, len(word)):
# 移除指定的集合元素
n_set.discard(word[i:])
result = sum(len(i) + 1 for i in n_set)
print(result)