第一个构建块:子字符串。
您可以in
用来检查:
>>> 'rest' in 'resting'
True
>>> 'sing' in 'resting'
False
接下来,我们将选择创建新列表的简单方法。我们将一个接一个地添加项目到新列表中,检查它们是否是子字符串。
def substringSieve(string_list):
out = []
for s in string_list:
if not any([s in r for r in string_list if s != r]):
out.append(s)
return out
您可以通过排序以减少比较次数来加快速度(毕竟,较长的字符串永远不能是较短/等长字符串的子字符串):
def substringSieve(string_list):
string_list.sort(key=lambda s: len(s), reverse=True)
out = []
for s in string_list:
if not any([s in o for o in out]):
out.append(s)
return out