1
假設我有一組字符串。如果一個字符串是另一個字符串的子字符串,那麼前者應該被刪除。如何計算最大字符串的最小數量?
我的想法是遍歷所有字符串在原設定,以及針對其他串每串測試中設定,並移除任何字符串,它是人的原設定的子字符串。但是這會導致對原始集合進行原地修改,這可能會在實現中造成一些問題。
是否有人有一個更好的想法應如何實施?謝謝。
假設我有一組字符串。如果一個字符串是另一個字符串的子字符串,那麼前者應該被刪除。如何計算最大字符串的最小數量?
我的想法是遍歷所有字符串在原設定,以及針對其他串每串測試中設定,並移除任何字符串,它是人的原設定的子字符串。但是這會導致對原始集合進行原地修改,這可能會在實現中造成一些問題。
是否有人有一個更好的想法應如何實施?謝謝。
你的問題不是很清楚。但是,如果我理解正確的話,你可以做這樣的事情
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']
這有一個O(n^2)運行時。我想知道是否某種分級排名會更快 – inspectorG4dget
這將是更好,如果你舉個例子輸入/輸出。 – Christian
字符串是序列,不套,所以你必須在這方面界定「子集」。 –
你的意思是子集或子字符串? – user2357112