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

파이썬에서 두 문자열의 가장 큰 병합

<시간/>

두 개의 문자열 'a'와 'b'와 문자열 'merge'가 있다고 가정해 보겠습니다. 작업은 다음과 같은 방식으로 'a'와 'b'의 문자로 'merge' 문자열을 채우는 것입니다.

  • 'a' 문자열이 비어 있지 않은 경우 'a' 문자열에서 첫 번째 문자를 제거하고 'merge' 문자열에 복사합니다.
  • 'b' 문자열이 비어 있지 않은 경우 'b' 문자열에서 첫 번째 문자를 제거하고 'merge' 문자열에 복사합니다.
  • 문자열 'a' 및 'b'가 비어 있지 않은 경우 문자열 'a'에서 첫 번째 문자를 제거하고 이를 문자열 'merge'로 복사한 다음 문자열 'b에서 첫 번째 문자(있는 경우)를 제거합니다. '를 입력하고 'merge' 문자열에 복사합니다.
  • 사전순으로 두 문자열에서 문자를 제거합니다. 즉, 문자열 'a'가 문자열 'b'보다 크면 문자열 'a'에서 문자를 제거한 다음 문자열 'b'에서 제거합니다.
  • '병합' 문자열을 반환합니다.

예를 들어

입력-1:

a = “bacaa”

b = “abcaa”

출력:

babcacaaaa

설명:

주어진 문자열 'a'는 사전순으로 문자열 'b'보다 크므로 문자열 'a', 즉 "b"에서 첫 번째 문자를 추출한 다음 문자열 'b'에서 추출합니다. 추출 후 문자열은 "babcacaaaa"가 됩니다.

이 문제를 해결하기 위한 접근 방식

이 문제를 해결하기 위한 재귀적 접근 방식은 문자열 'a'와 문자열 'b'의 각 문자를 추출하고 문자열 'a'의 문자가 사전순으로 다른 문자열보다 큰지 확인하고 마지막으로 문자열 'merge'에 연결하는 것입니다. .

여러 위치 뒤에 있는 각 문자의 하위 문자열을 찾고 사전순으로 다른 문자열보다 큰 경우 '병합'으로 연결합니다.

  • 두 개의 입력 문자열 'a'와 'b'를 사용합니다.
  • 재귀 문자열 함수 concatenateLargest(문자열 a, 문자열 b)는 두 개의 문자열을 입력으로 사용하고 연결 후 가장 큰 문자열, 즉 (문자열 'a' + 문자열 'b')를 반환합니다.
  • 'a> b'인 경우 문자열 'a'를 위치 '0'으로 분할하고 문자열 'a'의 출력을 반환합니다.
  • 'a
  • 연결된 문자열을 반환합니다.

예시

def concatenateLargest(a, b):
   ans = ""
   while a and b:
      if a > b:
         ans = a[0]
         a = a[1:]
      else:
         ans = b[0]
         b = b[1:]
   ans = a
   ans = b
   return ans
a = "bacaa"
b = "abcaa"
print(concatenateLargest(a, b))

위의 코드를 실행하면 출력이 다음과 같이 생성됩니다.

출력

bacabcaaaa

"bacaa"와 "abcaa"라는 두 문자열은 주어진 문제에 따라 병합 후 "bacabcaaaa"가 됩니다.