মনে করুন একটি স্ট্রিং আছে যা ব্র্যাকেট (রাউন্ড, কার্লি, স্কোয়ার) ধারণ করে। ব্র্যাকেটগুলো ব্যালেন্সড (ওয়েল-ফর্মড) কিনা যাচাই করতে হবে।
উদাহরণস্বরূপ, "([()()]{[]})()" হলে আউটপুট True।
সমাধানের ধাপসমূহ
- stack := নতুন তালিকা
- d := হ্যাশ ম্যাপ {'}':'{', ')':'(', ']':'['}
- প্রতিটি ক্যারেক্টার c s-এ,
- যদি c '}])'-এ হয়,
- যদি stack খালি হয় বা stack[-1] != d[c], False ফেরত দিন
- stack.pop()
- অন্যথায়, stack.append(c)
- যদি c '}])'-এ হয়,
- True ফেরত দিন যদি stack খালি হয়, অন্যথায় False
উদাহরণ
class Solution:
def solve(self, s):
stack = []
d = {'}':'{',')':'(',']':'['}
for c in s:
if c in '}])':
if not stack or stack[-1] != d[c]:
return False
stack.pop()
else:
stack.append(c)
return not stack
ob = Solution()
print(ob.solve("([()()]{[]})()"))ইনপুট
"([()()]{[]})()"আউটপুট
True