두 개의 문자열 '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"가 됩니다.