ধরুন আমাদের কাছে ছোট হাতের বর্ণমালার একটি স্ট্রিং আছে, অন্যান্য অক্ষর যেমন "[", "|", এবং "]"। এখানে "[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']