Giriş
Bu zorlukta, göreviniz dizelerin genel dizilerini bulmaktır. Alt diziler bitişik olmak zorunda değildir ve ayrıca dizeyi "sarabilir", sonuna kadar gidebilir ve baştan başlayarak başlayabilirler. Yine de, sargı sayısını en aza indirmek istersiniz.
Daha resmen izin uve vherhangi iki dizeleri, ve olmayacak k ≥ 0bir tamsayı. Biz demek ubir olduğunu k-paketleme ve dozaj altdizi ait vfarklı indeksleri varsa, öyle ki , en az endeksleri tatmin . Bu, içeriden soldan sağa gidip, bazı karakterlerini yolda seçerek ve en fazla etrafı sararak (eşdeğer olarak, en fazla tarama yaparak ) bulunabileceği anlamına gelir. Bir karakterin, bir etrafa sarılmadan sonra bile bir kereden fazla seçilemeyeceğini ve sarma sarma dizilerinin tam olarak bildiğimiz sıradan diziler olduğunu unutmayın.i1, i2, ..., ilen(u)u == v[i1] v[i2] ... v[ilen(u)]kijij > ij+1uvkk+1v0
Görev
Kişisel girişler iki boş olmayan alfanümerik dizeleri uve vve çıktı tamsayı küçüğüdür kböyle ubir olduğu kbir -paketleme ve dozaj altdizi v. Eğer böyle bir şey kyoksa çıktı alınacaktır -1.
Misal
Girişleri u := xyzyxzzxyxve v := yxzzazzyxxxyz. Biz karakterler için seyir başlarsa uiçinde vaç gözlü bir şekilde, biz 3 kez etrafında kaydırılır:
yxzzazzyxxxyz
>─x─────y────z┐
┌─────────────┘
└y───────x────┐
┌─────────────┘
└──zz─────x─y─┐
┌─────────────┘
└──────────x──>
Böylece doğru çıktı en fazla 3 olur. En soldaki karakterin xbir kez nasıl seçildiğine ve daha sonra tekrar kullanılamayacağından ikinci taramada nasıl yoksayıldığına dikkat edin. Bununla birlikte, sadece 2 sargı ile daha kısa bir yöntem vardır:
yxzzazzyxxxyz
>──────────xyz┐
┌─────────────┘
└yxzz────x────┐
┌─────────────┘
└───────y─x───>
Bir sargı (yani iki tarama) yeterli olmadığı ortaya çıktı, bu yüzden doğru çıktı 2.
Kurallar ve Bonuslar
Bir işlev veya tam bir program yazabilir ve gerekirse girişlerin sırasını da değiştirebilirsiniz. En düşük bayt sayısı kazanır ve standart boşluklara izin verilmez.
Tüm test senaryolarının toplamının 10 saniyenin altında hesaplanması için % -10 bonusu vardır . Makinemdeki belirsiz vakaları test edeceğim; Python'daki referans uygulamam yaklaşık 0,6 saniye sürüyor. Dikkate almak isteyebileceğiniz 1,86 GHz çift çekirdekli CPU'ya sahip 7 yaşında bir dizüstü bilgisayarım var.
Test Durumları
"me" "moe" -> 0
"meet" "metro" -> -1
"ababa" "abaab" -> 1
"abaab" "baabaa" -> 1
"1c1C1C2B" "1111CCCcB2" -> 3
"reverse" "reserved" -> 2
"abcdefg" "gfedcba" -> 6
"xyzyxzzxyx" "yxzzazzyxxxyz" -> 2
"aasdffdaasdf" "asdfddasdfsdaafsds" -> 2
xüç ayrı taramada kullanılıyor. Sadece bir kez kullanılabilir.