2014-01-19 105 views
1

假設我有一組字符串。如果一個字符串是另一個字符串的子字符串,那麼前者應該被刪除。如何計算最大字符串的最小數量?

我的想法是遍歷所有字符串在原設定,以及針對其他串每串測試中設定,並移除任何字符串,它是人的原設定的子字符串。但是這會導致對原始集合進行原地修改,這可能會在實現中造成一些問題。

是否有人有一個更好的想法應如何實施?謝謝。

+0

這將是更好,如果你舉個例子輸入/輸出。 – Christian

+3

字符串是序列,不套,所以你必須在這方面界定「子集」。 –

+3

你的意思是子集或子字符串? – user2357112

回答

3

你的問題不是很清楚。但是,如果我理解正確的話,你可以做這樣的事情

l = sorted(["abcd", "abc", "ab", "a"], key = len) 
print [ss for idx, ss in enumerate(l) if all(ss not in cs for cs in l[idx + 1:])] 

輸出

['abcd'] 
+0

這有一個O(n^2)運行時。我想知道是否某種分級排名會更快 – inspectorG4dget

相關問題