ধরুন আমাদের একটি ছোট হাতের স্ট্রিং 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