Trong trường hợp này, nhiệm vụ của bạn là xác định vị trí các chuỗi con với một cấu trúc nhất định.
Đầu vào
Đầu vào của bạn phải là hai chuỗi chữ và số không trống, một mẫu p
và một văn bản t
. Ý tưởng là mỗi ký tự p
đại diện cho một chuỗi con không trống liền kề nhau t
xảy ra cạnh nhau và p
đại diện cho sự kết hợp của chúng. Các ký tự giống hệt nhau tương ứng với các chuỗi con; ví dụ, mẫu aa
đại diện cho bất kỳ hình vuông không trống nào (một chuỗi có được bằng cách nối một chuỗi ngắn hơn với chính nó). Do đó, mẫu aa
có thể khớp với chuỗi con byebye
, với mỗi a
khớp bye
.
Đầu ra
Nếu văn bản t
chứa một chuỗi con p
phù hợp, thì đầu ra của bạn sẽ là chuỗi con đó, với các dấu hai chấm :
được chèn giữa các chuỗi tương ứng với các ký tự của p
. Ví dụ, nếu chúng ta có t = byebyenow
và p = aa
, thì đó bye:bye
là một đầu ra chấp nhận được. Có thể có một số lựa chọn cho chuỗi con phù hợp, nhưng bạn sẽ chỉ xuất một trong số chúng.
Nếu t
không chứa một chuỗi con phù hợp, đầu ra của bạn sẽ là một khuôn mặt buồn :(
.
Quy tắc và làm rõ
Các ký tự khác nhau p
có thể tương ứng với các chuỗi con giống nhau, do đó p = aba
có thể khớp với chuỗi AAA
. Lưu ý rằng các ký tự phải tương ứng với các chuỗi không trống; đặc biệt, nếu p
dài hơn t
, đầu ra phải được :(
.
Bạn có thể viết một chương trình đầy đủ hoặc một hàm và bạn cũng có thể thay đổi thứ tự của hai đầu vào. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép.
Các trường hợp thử nghiệm
Đưa ra trong định dạng pattern text -> output
. Lưu ý rằng các đầu ra chấp nhận được khác có thể tồn tại.
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