문자열 s가 있다고 가정합니다. 이전에 이미 나타난 모든 중복 문자를 제거해야 합니다. 최종 문자열은 실제 문자열과 동일한 순서의 문자를 갖습니다.
문자의 삽입 순서를 유지하기 위해 정렬된 사전을 사용하여 이 문제를 해결할 수 있습니다. 값은 해당 문자의 빈도이지만 여기서 빈도 값은 중요하지 않습니다. 딕셔너리를 구성한 후 키를 가져 와서 결합하여 문자열을 얻을 수 있습니다.
따라서 입력이 s ="bbabcaaccdbaabababc"와 같으면 출력은 "bacd"가 됩니다.
- d :=키가 삽입 순서에 따라 순서대로 저장되는 사전
- s의 각 문자 c에 대해 다음을 수행합니다.
- c가 d에 없으면
- d[c] :=0
- d[c] :=d[c] + 1
- c가 d에 없으면
- 출력 문자열을 만들고 반환하기 위해 적절한 순서로 키를 차례로 결합합니다.
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
from collections import OrderedDict def solve(s): d = OrderedDict() for c in s: if c not in d: d[c] = 0 d[c] += 1 return ''.join(d.keys()) s = "bbabcaaccdbaabababc" print(solve(s))
입력
"bbabcaaccdbaabababc"
출력
"bacd"