문자열 s가 있다고 가정합니다. 이전에 이미 발생한 문자를 제거하고 축소된 문자열을 반환해야 합니다. 이를 해결하기 위해 하나의 정렬된 사전을 사용하여 문자의 삽입 순서를 유지합니다. 값은 해당 문자의 빈도이지만 여기서 빈도 값은 중요하지 않습니다. 사전을 구성한 후에는 키를 가져와서 결합하여 문자열을 얻을 수 있습니다.
따라서 입력이 s ="cabbbaadac"과 같으면 출력은 "cabd"가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 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 = "cabbbaadac" print(solve(s))
입력
"cabbbaadac"
출력
cabd