ধরুন আমাদের একটি ছোট হাতের স্ট্রিং s আছে, আমাদের পরীক্ষা করতে হবে যে s-তে অক্ষরগুলির কিছু অনুসৃতি বাছাই করা সম্ভব কিনা যেমন − 1. অক্ষরগুলির যেকোন দুটি ধারাবাহিক সূচকের পার্থক্য একই 2. অক্ষরগুলি স্ট্রিং গঠন করে "প্রোগ্রামিং প্রশ্ন"পি>
সুতরাং, যদি ইনপুটটি "pzrzozgzrzazmzmziznzgzqzuzezsztzizozn" এর মত হয়, তাহলে আউটপুট হবে True
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- p :=সূচকগুলির একটি বিন্যাস যেখানে p উপস্থিত রয়েছে
- r :=সূচকগুলির একটি বিন্যাস যেখানে r উপস্থিত রয়েছে
- p-এ প্রতিটি j-এর জন্য করুন
- r-এ প্রতিটি k-এর জন্য, কর
- যদি k> j, তাহলে
- যদি "প্রোগ্রামিং প্রশ্ন" s-এর সাবস্ট্রিং-এ ইনডেক্স j থেকে s-এর সাইজ পর্যন্ত, k-j অক্ষর বাদ দিয়ে, তাহলে
- সত্য ফেরান
- যদি "প্রোগ্রামিং প্রশ্ন" s-এর সাবস্ট্রিং-এ ইনডেক্স j থেকে s-এর সাইজ পর্যন্ত, k-j অক্ষর বাদ দিয়ে, তাহলে
- যদি k> j, তাহলে
- r-এ প্রতিটি k-এর জন্য, কর
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, s): p = [i for i, c in enumerate(s) if c == "p"] r = [i for i, c in enumerate(s) if c == "r"] for j in p: for k in r: if k > j: if "programmingquestion" in s[j:len(s):k-j]: return True return False ob = Solution() s = "pzrzozgzrzazmzmziznzgzqzuzezsztzizozn" print(ob.solve(s))
ইনপুট
"pzrzozgzrzazmzmziznzgzqzuzezsztzizozn"
আউটপুট
True