मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं। हम t को s से कितनी भी बार हटा सकते हैं। और t एक समय में केवल एक बार प्रकट होता है। हमें यह जांचना है कि क्या s को t को आवश्यकतानुसार बार-बार हटाकर खाली बनाया जा सकता है।
उदाहरण के लिए, यदि इनपुट s = "pipipinnn", t = "pin" है, तो आउटपुट True होगा क्योंकि हम "pipipinnn" से "pin" हटाकर "pipinn" प्राप्त कर सकते हैं, फिर "pin" हटाकर "pin" प्राप्त कर सकते हैं, फिर इसे हटाकर खाली बना सकते हैं।
समाधान दृष्टिकोण
हम लूप में t को s में ढूंढते हैं और पहली घटना को हटाते हैं, जब तक t न मिले या s खाली न हो जाए।
एल्गोरिदम चरण:
- जब
len(s) > 0: position = s.find(t)(tका प्रारंभिक इंडेक्स ढूंढें)- यदि
position == -1(नहीं मिला), तो लूप तोड़ें s = s.replace(t, "", 1)(पहली घटना हटाएं)len(s) == 0के आधार पर True या False लौटाएं
पायथन कार्यान्वयन
def solve(s, t):
while len(s) > 0:
position = s.find(t)
if position == -1:
break
s = s.replace(t, "", 1)
return len(s) == 0
s = "pipipinnn"
t = "pin"
print(solve(s, t)) # True
इनपुट
"pipipinnn", "pin"
आउटपुट
True
चरण-दर-चरण:
"pipipinnn"→"pin"हटाएं (इंडेक्स 2) →"pipinn""pipinn"→"pin"हटाएं (इंडेक्स 2) →"pin""pin"→"pin"हटाएं (इंडेक्स 0) →""(खाली)
सफलतापूर्वक खाली हो गया!