मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें दिए गए स्ट्रिंग से लगातार डुप्लिकेट वर्णों को समाप्त करना होगा और इसे वापस करना होगा। इसलिए, यदि किसी सूची में लगातार दोहराए गए वर्ण हैं, तो उन्हें वर्ण की एक प्रति के साथ प्रतिस्थापित किया जाना चाहिए। तत्वों का क्रम पहले जैसा ही रहेगा।
इसलिए, यदि इनपुट "heeeeelllllllllloooooo" जैसा है, तो आउटपुट "हेलो" होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रिट:=एक खाली स्ट्रिंग
-
इनिशियलाइज़ i:=0 के लिए, जब i <साइज़ ऑफ़ s, अपडेट (i से 1 तक बढ़ाएँ), करें -
-
यदि रिट का आकार गैर-शून्य है और रिट का अंतिम तत्व s[i] के समान है, तो -
-
निम्नलिखित भाग पर ध्यान न दें, अगले पुनरावृत्ति पर जाएं
-
-
ret :=ret concatenate s[i]
-
-
वापसी रिट
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; class Solution { public: string solve(string s) { string ret = ""; for(int i = 0; i < s.size(); i++){ if(ret.size() && ret.back() == s[i]){ continue; } ret += s[i]; } return ret; } }; int main(){ Solution ob; cout << (ob.solve("heeeeelllllllloooooo")); }
इनपुट
"heeeeelllllllloooooo"
आउटपुट
helo