단어 목록과 공백이 없는 다른 문자열이 있다고 가정합니다. 단어 목록을 사용하여 문자열을 분해할 수 있는지 여부를 확인해야 합니다.
따라서 입력이 단어 =["love", "python", "we", "programming", "language"] s ="welovepythonprogramming"과 같으면 출력은 True
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- words :=모든 고유한 단어의 새로운 세트
- rec() 함수를 정의합니다. 이것은 내가 걸릴 것입니다
- i가 s의 크기와 같으면
- 참 반환
- acc :=빈 문자열
- i 범위에서 s 크기의 j에 대해 다음을 수행합니다.
- acc :=acc 연결 s[j]
- acc가 단어로 된 경우
- rec(j + 1)이 참이면
- 참 반환
- rec(j + 1)이 참이면
- 거짓을 반환
- 메인 메서드에서 rec(0)을 호출하고 결과를 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, words, s): words = set(words) def rec(i=0): if i == len(s): return True acc = "" for j in range(i, len(s)): acc += s[j] if acc in words: if rec(j + 1): return True return False return rec() ob = Solution() words = ["love", "python", "we", "programming", "language"] s = "welovepythonprogramming" print(ob.solve(words, s))
입력
["love", "python", "we", "programming", "language"], "welovepythonprogramming"
출력
True