2014-01-19 67 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

相关问题