이 challence에서, 당신의 임무는 주어진 구조를 가진 부분 문자열을 찾는 것입니다.
입력
입력은 비어 있지 않은 두 개의 영숫자 문자열, 패턴 p
및 텍스트 여야 합니다t
. 아이디어는의 각 문자가 서로 옆에 p
있는 연속 된 비어 있지 않은 하위 문자열을 나타내며 그 연결을 나타냅니다. 동일한 문자는 동일한 하위 문자열에 해당합니다. 예를 들어, 패턴 은 비어 있지 않은 정사각형 (더 짧은 문자열을 자체에 연결하여 얻은 문자열)을 나타냅니다. 따라서 패턴 은 각 일치하는 부분 문자열과 일치 할 수 있습니다 .t
p
aa
aa
byebye
a
bye
산출
텍스트 t
에 p
일치 하는 하위 문자열이 포함되어 있으면의 문자열에 콜론이 :
삽입 된 하위 문자열이 출력 p
됩니다. 예를 들어, 우리가있는 경우 t = byebyenow
와 p = aa
, 다음 bye:bye
허용 출력된다. 일치하는 부분 문자열에 대한 몇 가지 선택 사항이있을 수 있지만 그 중 하나만 출력해야합니다.
경우 t
일치하는 문자열을 포함하지 않는, 당신의 출력은 슬픈 얼굴이어야한다 :(
.
규칙 및 설명
의 다른 문자는 p
동일한 하위 문자열에 해당 할 p = aba
수 있으므로 string과 일치 할 수 있습니다 AAA
. 문자는 비어 있지 않은 문자열과 일치해야합니다. 특히, p
보다 긴 경우 t
출력은이어야합니다 :(
.
전체 프로그램 또는 함수를 작성할 수 있으며 두 입력의 순서를 변경할 수도 있습니다. 바이트 수가 가장 적고 표준 허점이 허용되지 않습니다.
테스트 사례
형식으로 제공됩니다 pattern text -> output
. 다른 허용 가능한 출력이있을 수 있습니다.
a Not -> N
aa Not -> :(
abcd Not -> :(
aaa rerere -> re:re:re
xx ABAAAB -> A:A
MMM ABABBAABBAABBA -> ABBA:ABBA:ABBA
x33x 10100110011001 -> 10:1001:1001:10
abcacb 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> c:a0aa:0c:c:0c:a0aa
abccab 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> a:a:0c0:0c0:a:a
abcbcab 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> :(
abcbdcab 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> 00:c:ca0aa0c:c:0:ca0aa0c:00:c
O(2^((n * (n + 1))/2))
: P