দুটি স্ট্রিং s, t এবং একটি টার্গেট স্ট্রিং r দেওয়া আছে। s এবং t-এর অক্ষরগুলোর আশেপাশের ক্রম (Order) বজায় রেখে যদি r তৈরি করা সম্ভব হয় কিনা তা চেক করতে হবে।
উদাহরণ: s = "xyz", t = "mno", r = "xymnoz" → আউটপুট True।
সমাধানের ধাপসমূহ (রিকার্সিভ / DP)
বেস কেস: তিনটিই খালি হলে
True। শুধুrখালি হলেFalse।sখালি হলেt == rচেক করুন।tখালি হলেs == rচেক করুন।যদি
s[0] == r[0]হয়, তবেsolve(s[1:], t, r[1:])কল করুন।যদি
t[0] == r[0]হয়, তবেsolve(s, t[1:], r[1:])কল করুন।উপরের দুটোই না হলে
Falseরিটার্ন করুন।
পাইথন কোড উদাহরণ
class Solution:
def solve(self, s, t, r):
if not s and not t and not r:
return True
if not r:
return False
if not s:
return t == r
if not t:
return s == r
if s[0] == r[0]:
if self.solve(s[1:], t, r[1:]):
return True
if t[0] == r[0]:
if self.solve(s, t[1:], r[1:]):
return True
return False
ob = Solution()
s = "xyz"
t = "mno"
r = "xymnoz"
print(ob.solve(s, t, r))
ইনপুট
"xyz", "mno", "xymnoz"
আউটপুট
True