Bu zorlukta, göreviniz belirli bir yapıya sahip alt dizeleri bulmaktır.
Giriş
Girişiniz boş olmayan iki alfasayısal karakter dizisi, bir desen p
ve bir metin olmalıdır t
. Buradaki fikir, her karakterinin yan yana gerçekleşen p
bitişik, boş olmayan bir alt dizeyi temsil t
etmesi ve p
bunların birleşmesini temsil etmesidir. Özdeş karakterler özdeş alt dizelere karşılık gelir; örneğin, desen aa
boş olmayan herhangi bir kareyi (daha kısa bir dizeyi kendine birleştirerek elde edilen bir dize) temsil eder. Böylece desen aa
, byebye
her bir a
eşleşmeyle alt dizeyle eşleşebilir bye
.
Çıktı
Metin eşleşen t
bir alt dize içeriyorsa p
, çıktınız :
karakterlerin karşılık gelen dizeleri arasına iki nokta üst üste konacak şekilde o dize olacaktır p
. Örneğin, varsa t = byebyenow
ve p = aa
daha sonra bye:bye
kabul edilebilir bir çıkıştır. Eşleşen alt dize için birkaç seçenek olabilir, ancak bunlardan yalnızca birini çıkartabilirsiniz.
Eğer t
bir eşleşen alt içermiyor, çıktı üzgün bir yüz olmalıdır :(
.
Kurallar ve Açıklamalar
Farklı karakterleri p
aynı alt dizelere karşılık gelebilir, bu nedenle dizeyle p = aba
eşleşebilir AAA
. Karakterlerin boş olmayan dizelere karşılık gelmesi gerektiğini unutmayın; özellikle, çıkış p
daha uzunsa t
, çıktı olmalıdır :(
.
Tam bir program veya işlev yazabilir ve iki girişin sırasını da değiştirebilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklara izin verilmez.
Test Durumları
Biçimde verilir pattern text -> output
. Kabul edilebilir diğer çıktıların olabileceğini unutmayın.
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