프로그램이나 함수를 작성 개의 ASCII 문자열을 주어, 그 A
와 B
, 문자열을 생성합니다 A'
및 B'
일반 문자열은 그 자리에서 어디 반전된다. 찾는 과정 A'
은 다음과 같습니다.
A'
처음에는 비어 있습니다.- 의 첫 번째 문자
A
가에B
있는 경우 가장 긴 접두어A
가의 하위 문자열 인 것을 찾으십시오B
. 이 접두사를 제거A
하고에 반전을 추가하십시오A'
. - 그렇지 않으면이 첫 문자를 제거
A
하고에 추가하십시오A'
. A
비어 있을 때까지 2-3 단계를 반복하십시오 .
찾기 B'
도 비슷하게 수행됩니다.
예
문자열 A = "abc bab"
과를 고려해 봅시다 B = "abdabc"
. 의 경우 다음 A'
과 같은 일이 발생합니다.
A = "abc bab"
: 첫 번째 문자"a"
는 B이고 B에서 찾은 A의 가장 긴 접두어는"abc"
입니다. 이 접두사를 A에서 제거하고 그 반전"cba"
을 A '에 추가합니다 .A = " bab"
: 첫 번째 문자" "
는 B에 없으므로 A에서이 문자를 제거하고 A '에 추가합니다.A = "bab"
: 첫 번째 문자"b"
는 B이고 B에서 찾은 A의 가장 긴 접두어는"b"
입니다. 우리는이 접두사를 A에서 제거하고 그 반전 (아직"b"
)을 A '에 추가합니다.A = "ab"
: 첫 번째 문자"a"
는 B이고 B에서 찾은 A의 가장 긴 접두어는"ab"
입니다. 이 접두사를 A에서 제거하고 그 반전"ba"
을 A '에 추가합니다 .A = ""
: A가 비어 있으므로 중지합니다.
따라서 우리는 얻는다 A' = "cba" + " " + "b" + "ba" = "cba bba"
. B '의 경우 프로세스는 비슷합니다.
B = "abdabc" -> "a" in A, remove prefix "ab"
B = "dabc" -> "d" not in A, remove "d"
B = "abc" -> "a" in A, remove prefix "abc"
따라서 우리는 얻는다 B' = "ba" + "d" + "cba" = "badcba"
.
마지막으로 두 문자열을 반환합니다.
(A', B') = ("cba bba", "badcba")
테스트 사례
"abc bab", "abdabc" -> "cba bba", "badcba"
"abcde", "abcd bcde" -> "dcbae", "dcba edcb"
"hello test", "test banana" -> "hello tset", "tset banana"
"birds flying high", "whistling high nerds" -> "bisdr flyhgih gni", "wihstlhgih gni nesdr"
바이트 단위의 최단 코드가 이깁니다.
@TimmyD 정확한 입력 / 출력 형식이 선택됩니다. 입력이 소문자 ASCII 인 것으로 가정 할 수 없으며 인쇄 가능한 ASCII 일 수 있습니다.
—
orlp
빈 문자열이 올바른 입력입니까?
—
MtnViewMark 5
@MtnViewMark 예.
—
orlp
"cba bba", "badcba"
따옴표와 쉼표 를 포함하는 것과 유사 합니까?