मान लीजिए हमारे पास एक स्ट्रिंग s है जिसमें लोअरकेस और अपरकेस अंग्रेजी अक्षर हैं। हम एक स्ट्रिंग को गुड स्ट्रिंग मानते हैं जिसमें कोई भी दो आसन्न वर्ण s[i] और s[i+1] ऐसे नहीं हैं जहां:
0 <= i <= sकी लंबाई - 2s[i]लोअरकेस में है औरs[i+1]वही अक्षर अपरकेस में है या इसके विपरीत।
स्ट्रिंग को गुड स्ट्रिंग में बदलने के लिए, हम उन दो आसन्न वर्णों को चुन सकते हैं जो स्ट्रिंग को खराब बनाते हैं और उन्हें हटा सकते हैं। हम इस प्रक्रिया को तब तक जारी रखते हैं जब तक स्ट्रिंग गुड न हो जाए (एक खाली स्ट्रिंग भी गुड हो सकती है)। हमें स्ट्रिंग को गुड बनाने के बाद की स्ट्रिंग ढूंढनी है।
उदाहरण के लिए, यदि इनपुट s = "popPpulaBbr" है, तो आउटपुट "popular" होगा, क्योंकि पहले या तो "pP" या "Pp" हटाएं और फिर "Bb" हटाएं।
समाधान के चरण
res :=एक नई सूचीsके प्रत्येक वर्णchके लिए:- यदि
resखाली नहीं है औरresका अंतिम तत्वchके समान है (केस इन्सेंसिटिव), तोresसे अंतिम तत्व हटाएं - अन्यथा,
chकोresके अंत में जोड़ें resमें मौजूद प्रत्येक तत्व को जोड़कर वापस करें
उदाहरण (पायथन)
def solve(s):
res = []
for ch in s:
if res and res[-1] != ch and res[-1].lower() == ch.lower():
res.pop()
else:
res.append(ch)
return ''.join(res)
s = "popPpulaBbr"
print(solve(s))
इनपुट
"popPpulaBbr"
आउटपुट
popular