Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 다른 두 문자열을 사용하여 최종 문자열을 구성할 수 있는지 확인하는 프로그램

<시간/>

두 개의 문자열 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