두 개의 문자열 s와 t가 있다고 가정하고 s의 문자를 교환하여 t를 생성할 수 있는지 확인해야 합니다.
따라서 입력이 s ="worldlloeh" t ="helloworld"와 같으면 "worldlloeh"에서 "helloworld"를 만들기 위해 문자를 교환할 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s_len :=s의 크기, t_len :=t의 크기
- s_len이 t_len과 같지 않으면
- 거짓을 반환
- freq :=s에 모든 문자와 주파수를 저장하는 맵
- 0에서 t_len 범위에 있는 i에 대해 다음을 수행합니다.
- 주파수[t[i]] :=주파수[t[i]] - 1
- 주파수[t[i]] <0이면
- 거짓을 반환
- 참 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
from collections import defaultdict def solve(s, t): s_len = len(s) t_len = len(t) if (s_len != t_len): return False freq = defaultdict(int) for char in s : freq[char] += 1 for i in range(t_len) : freq[t[i]] -= 1 if freq[t[i]] < 0: return False return True s = "worldlloeh" t = "helloworld" print(solve(s, t))
입력
"worldlloeh", "helloworld"
출력
True