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 pbitişik, boş olmayan bir alt dizeyi temsil tetmesi ve pbunların birleşmesini temsil etmesidir. Özdeş karakterler özdeş alt dizelere karşılık gelir; örneğin, desen aaboş olmayan herhangi bir kareyi (daha kısa bir dizeyi kendine birleştirerek elde edilen bir dize) temsil eder. Böylece desen aa, byebyeher bir aeşleşmeyle alt dizeyle eşleşebilir bye.
Çıktı
Metin eşleşen tbir 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 = byebyenowve p = aadaha sonra bye:byekabul edilebilir bir çıkıştır. Eşleşen alt dize için birkaç seçenek olabilir, ancak bunlardan yalnızca birini çıkartabilirsiniz.
Eğer tbir eşleşen alt içermiyor, çıktı üzgün bir yüz olmalıdır :(.
Kurallar ve Açıklamalar
Farklı karakterleri paynı alt dizelere karşılık gelebilir, bu nedenle dizeyle p = abaeşleşebilir AAA. Karakterlerin boş olmayan dizelere karşılık gelmesi gerektiğini unutmayın; özellikle, çıkış pdaha 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