두 개의 문자열 s, t와 다른 문자열 r이 있다고 가정하고 s와 t의 순서대로 문자를 병합하여 r을 얻을 수 있는 방법이 있는지 확인해야 합니다.
따라서 입력이 s ="xyz" t ="mno" r ="xymnoz"와 같으면 출력은 True가 됩니다. xymnoz는 xyz와 mno를 인터리브하여 구성할 수 있기 때문입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
solve() 함수를 정의합니다. s, t, r
이 걸립니다. -
s, t 및 r이 비어 있으면
-
참을 반환
-
r이 비어 있으면
-
거짓을 반환
-
-
-
-
s가 비어 있으면
-
t가 r과 같으면 true를 반환하고, 그렇지 않으면 false를 반환
-
-
t가 0이 아닌 경우
-
반환 s는 r
과 동일합니다.
-
-
s[0]이 r[0]과 같으면
-
solve(s[index 1 to end], t, r[from index 1 to end])가 참이면
-
참을 반환
-
-
-
t[0]이 r[0]과 같으면
-
solve(s, t[index 1 to end], r[from index 1 to end])가 참이면
-
참을 반환
-
-
-
거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, s, t, r): if not s and not t and not r: return True if not r: return False if not s: return t == r if not t: return s == r if s[0] == r[0]: if self.solve(s[1:], t, r[1:]): return True if t[0] == r[0]: if self.solve(s, t[1:], r[1:]): return True return False ob = Solution() s = "xyz" t = "mno" r = "xymnoz" print(ob.solve(s, t, r))
입력
"xyz", "mno", "xymnoz"
출력
True