Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी++ में स्ट्रिंग II में सभी आसन्न डुप्लिकेट निकालें

मान लीजिए कि एक स्ट्रिंग s दी गई है, k डुप्लिकेट हटाने में स्ट्रिंग s से आसन्न और समान अक्षरों को चुनना और उन्हें हटाना शामिल है, जिससे हटाए गए सबस्ट्रिंग के बाएँ और दाएँ पक्ष एक साथ जुड़ते हैं। हम दिए गए स्ट्रिंग s पर बार-बार k डुप्लिकेट निष्कासन करेंगे, जब तक कि हम किसी भी शेष को नहीं बदल सकते। इस तरह के सभी डुप्लिकेट निष्कासन किए जाने के बाद हमें अंतिम स्ट्रिंग ढूंढनी होगी। इसलिए यदि इनपुट s ="deeedbbcccbdaa", और k =3 जैसा है, तो आउटपुट "आ" होगा, पहले "eee" और "ccc" को हटा दें और हमें "ddbbbaa" मिलेगा, फिर "bbb" को हटा दें। , स्ट्रिंग "dddaa" होगी, फिर "ddd" हटाएं, और आउटपुट "aa" होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • उत्तर:=खाली स्ट्रिंग
  • चार-इंट जोड़ी के लिए एक स्टैक बनाएं, n:=स्ट्रिंग का आकार
  • मैं के लिए 0 से n की सीमा में
    • x :=s[i]
    • यदि स्टैक खाली नहीं है और स्टैक के शीर्ष तत्व का पूर्णांक =k, तो स्टैक से शीर्ष तत्व को हटा दें
    • अगर i =n, तो ब्रेक करें
    • यदि स्टैक खाली है या स्टैक टॉप का वर्ण x नहीं है, तो स्टैक में युग्म (x, 1) डालें, और i को 1 से बढ़ाएँ
    • अन्यथा स्टैक टॉप एलीमेंट के पूर्णांक भाग को बढ़ाएँ, और i को 1 से बढ़ाएँ
  • जबकि स्टैक खाली नहीं है
    • अस्थायी:=स्टैक शीर्ष तत्व
    • जबकि अस्थायी का पूर्णांक भाग 0 नहीं है,
      • उत्तर:=उत्तर + अस्थायी का वर्ण भाग
      • अस्थायी के पूर्णांक भाग को 1 से घटाएं
    • स्टैक से शीर्ष तत्व हटाएं
  • उत्तर स्ट्रिंग को उल्टा करें और वापस लौटें।

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string removeDuplicates(string s, int k) {
      string ans = "";
      stack < pair<char, int> > st;
      int n = s.size();
      for(int i = 0; i <= n;){
         char x = s[i];
         if(!st.empty() && st.top().second == k)st.pop();
         if(i == n)break;
         if(st.empty() || st.top().first != x){
            st.push({x, 1});
            i++;
         } else {
            st.top().second++;
            i++;
         }
      }
      while(!st.empty()){
         pair <char, int> temp = st.top();
         while(temp.second--) ans += temp.first;
         st.pop();
      }
      reverse(ans.begin(), ans.end());
      return ans;
   }
};
main(){
   Solution ob;
   cout <<(ob.removeDuplicates("deeedbbcccbdaa", 3));
}

इनपुट

"deeedbbcccbdaa"
3

आउटपुट

aa

  1. सी # में किसी दिए गए स्ट्रिंग से सभी डुप्लीकेट हटाएं

    यहाँ स्ट्रिंग है। string str = "ppqqrr"; अब, स्ट्रिंग को चार में मैप करने के लिए हैशसेट का उपयोग करें। यह एक स्ट्रिंग से डुप्लिकेट वर्णों को हटा देगा। var res = new HashSet<char>(str); आइए देखें पूरा उदाहरण - उदाहरण using System; using System.Linq; using System.Collections.Generic;

  1. पायथन में स्ट्रिंग में सभी आसन्न डुप्लिकेट निकालें

    मान लीजिए कि हमारे पास लोअरकेस अक्षरों का एक स्ट्रिंग S है; डुप्लिकेट हटाने का ऑपरेशन किया जाएगा। यह दो आसन्न और समान अक्षरों को चुनकर और उन्हें हटाकर किया जाएगा। हम बार-बार S से डुप्लीकेट हटा देंगे जब तक कि कोई डुप्लीकेट न बचे। इस तरह के सभी डुप्लिकेट निष्कासन पूर्ण होने के बाद स्ट्रिंग वापस करें

  1. पायथन में दिए गए स्ट्रिंग से सभी डुप्लिकेट निकालें

    पायथन में एक स्ट्रिंग से सभी डुप्लिकेट को हटाने के लिए, हमें पहले स्ट्रिंग को रिक्त स्थान से विभाजित करने की आवश्यकता है ताकि हमारे पास प्रत्येक शब्द एक सरणी में हो। फिर डुप्लिकेट निकालने के कई तरीके हैं। हम पहले सभी शब्दों को लोअरकेस में परिवर्तित करके, फिर उन्हें क्रमबद्ध करके और अंत में केवल अद्