ভূমিকা
এই চ্যালেঞ্জে আপনার কাজটি হল স্ট্রিংগুলির সাধারণীকরণের উপসর্গগুলি সন্ধান করা। উত্তরোত্তরগুলি অগত্যা সংগত নয়, এবং তারা স্ট্রিংটি "প্রায় মোড়ানো" করতে পারে, এর শেষ পেরিয়ে যায় এবং শুরু থেকে আবার শুরু করে। যদিও আপনি মোড়কের সংখ্যা হ্রাস করতে চান।
আরো আনুষ্ঠানিকভাবে যাক u
এবং v
কোন দুটি স্ট্রিং, এবং হতে k ≥ 0
একটি পূর্ণসংখ্যা। আমরা যে u
একটি হল k
-wrapping subsequence এর v
, যদি সেখানে স্বতন্ত্র সূচকের হয় যেমন যে , এবং সবচেয়ে সূচকের সন্তুষ্ট । এর অর্থ এই যে ভিতরে পাওয়া যাবে যাচ্ছে বাঁ দিক থেকে ডানদিকে পথে তার অক্ষরের কিছু বাছাই করার, এবং মোড়ানো সর্বাধিক প্রায় দ্বারা বার (equivalently, সর্বাধিক করছেন জুড়ে sweeps )। নোট করুন যে কোনও চরিত্রকে একবারে একাধিকবার বেছে নেওয়া যায় না এমনকি একটি মোড়কের চারপাশের পরেও, এবং সেই- মোড়কের অনুচ্ছেদগুলি হ'ল সাধারণ অনুচ্ছেদ যা আমরা সকলেই পরিচিত।i1, i2, ..., ilen(u)
u == v[i1] v[i2] ... v[ilen(u)]
k
ij
ij > ij+1
u
v
k
k+1
v
0
কাজটি
তোমার ইনপুট দুই খালি নয় এমন আলফানিউমেরিক স্ট্রিং হয় u
এবং v
, এবং আপনার আউটপুট পূর্ণসংখ্যা সবচেয়ে ছোট k
যেমন যে u
একটি হল k
এর -wrapping subsequence v
। যদি এরকম কোনও k
উপস্থিত না থাকে তবে আউটপুট হবে -1
।
উদাহরণ
ইনপুট u := xyzyxzzxyx
এবং বিবেচনা করুন v := yxzzazzyxxxyz
। আমরা যদি অক্ষর খুঁজছেন শুরু u
মধ্যে v
একটি অর্থগৃধ্নু ফ্যাশন, আমরা 3 বার চারপাশে মোড়ানো হবে:
yxzzazzyxxxyz
>─x─────y────z┐
┌─────────────┘
└y───────x────┐
┌─────────────┘
└──zz─────x─y─┐
┌─────────────┘
└──────────x──>
সুতরাং সঠিক আউটপুট সর্বাধিক ৩. নোট করুন যে কীভাবে বাম-সর্বাধিক অক্ষরটি x
একবার নির্বাচিত হয় এবং তারপরে দ্বিতীয় ঝাড়ুতে উপেক্ষা করা হয়, কারণ এটি পুনরায় ব্যবহার করা যায় না। তবে, কেবল দুটি মোড়কের চারপাশে একটি ছোট পদ্ধতি রয়েছে:
yxzzazzyxxxyz
>──────────xyz┐
┌─────────────┘
└yxzz────x────┐
┌─────────────┘
└───────y─x───>
দেখা যাচ্ছে যে একটি মোড়কের চারপাশে (এটি দুটি সুইপ) যথেষ্ট নয়, তাই সঠিক আউটপুট 2
।
বিধি ও বোনাস
আপনি কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম লিখতে পারেন, এবং প্রয়োজনের সাথে ইনপুটগুলির ক্রমও পরিবর্তন করতে পারেন। সর্বনিম্ন বাইট গণনা জয়, এবং মান লুফোলগুলি অনুমোদিত নয়।
একটা হল -10% বোনাস অধীনে 10 সেকেন্ডের মোট পরীক্ষার বিষয় সব কম্পিউটিং জন্য। আমি আমার মেশিনে অস্পষ্ট মামলাগুলি পরীক্ষা করব; পাইথনে আমার রেফারেন্স বাস্তবায়ন প্রায় 0.6 সেকেন্ড সময় নেয়। আমার 7 বছরের পুরানো ল্যাপটপ রয়েছে 1.86 গিগাহার্টজ ডুয়াল কোর সিপিইউ, যা আপনি বিবেচনায় নিতে চাইতে পারেন।
পরীক্ষার কেস
"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
তিনটি স্বতন্ত্র সুইপগুলিতে ব্যবহৃত হয়। এটি কেবল একবার ব্যবহার করা যেতে পারে।