單詞的壓縮編碼(leetcode)

給定一個單詞列表,我們將這個列表編碼成一個索引字符串 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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章