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

관련 문제