ধরুন আমাদের কাছে ছোট হাতের বর্ণমালার একটি স্ট্রিং আছে, অন্যান্য অক্ষর যেমন "[", "|", এবং "]"। এখানে "[a |b s দ্বারা প্রতিনিধিত্ব করতে পারে এমন সমস্ত সম্ভাব্য মান ধারণকারী স্ট্রিংগুলির একটি তালিকা আমাদের খুঁজে বের করতে হবে। এখানে "[]" নেস্ট করা যাবে না এবং যেকোন সংখ্যক পছন্দ থাকতে পারে।
সুতরাং, যদি ইনপুটটি s ="[d|t|l]im[e|s]" এর মত হয়, তাহলে আউটপুট হবে ['ডাইম', 'ডিমস', 'লাইম', 'লিমস', 'টাইম' , 'tims']
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- যদি s খালি হয়, তাহলে
- খালি স্ট্রিং সহ একটি তালিকা ফেরত দিন
- n :=s এর আকার
- seq :=একটি নতুন তালিকা, res :=একটি নতুন তালিকা
- একটি ফাংশন সাহায্যকারী() সংজ্ঞায়িত করুন। এটি pos
- লাগবে
- যদি pos n এর মত হয়, তাহলে
- seq-এ উপস্থিত প্রতিটি উপাদান যোগ করুন এবং res এ সন্নিবেশ করুন
- অন্যথায়,
- যদি s-এর সাবস্ট্রিং-এ "[" থাকে[সূচী থেকে শেষ পর্যন্ত], তাহলে
- start :=pos + s এর সাবস্ট্রিংয়ে "[" এর সূচী[সূচী pos থেকে শেষ পর্যন্ত]
- end :=pos + index of "]" s এর সাবস্ট্রিংয়ে [index pos থেকে শেষ পর্যন্ত]
- এস এর সাবস্ট্রিং-এর প্রতিটি বিকল্পের জন্য শুরু থেকে শেষ পর্যন্ত "|" দ্বারা বিভক্ত, করুন
- seq-এর শেষে s[সূচী থেকে শুরু করতে - 1] ঢোকান
- seq-এর শেষে সন্নিবেশ বিকল্প
- সহায়ক(শেষ + 1)
- seq থেকে শেষ দুটি উপাদান মুছুন
- যদি s-এর সাবস্ট্রিং-এ "[" থাকে[সূচী থেকে শেষ পর্যন্ত], তাহলে
- অন্যথায়,
- seq-এর শেষে s [index pos থেকে end] ঢোকান
- সহায়ক(n)
- seq থেকে শেষ উপাদান মুছুন
- যদি pos n এর মত হয়, তাহলে
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন:
- সহায়ক(0)
- বাছাই ক্রমে রিটার্ন করুন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, s): if not s: return [""] n = len(s) def helper(pos): if pos == n: res.append("".join(seq)) else: if "[" in s[pos:]: start = pos + s[pos:].index("[") end = pos + s[pos:].index("]") for option in s[start + 1 : end].split("|"): seq.append(s[pos:start]) seq.append(option) helper(end + 1) seq.pop() seq.pop() else: seq.append(s[pos:]) helper(n) seq.pop() seq = [] res = [] helper(0) return sorted(res) ob = Solution() s = "[d|t|l]im[e|s]" print(ob.solve(s))
ইনপুট
"[d|t|l]im[e|s]"
আউটপুট
['dime', 'dims', 'lime', 'lims', 'time', 'tims']