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

C++ में वैध पैरेंथेसिस बनाने के लिए न्यूनतम हटाना


मान लीजिए हमारे पास '(', ')' और लोअरकेस अंग्रेजी वर्णों की एक स्ट्रिंग s है। हमें न्यूनतम संख्या में पैरेंथेसिस ( '(' या ')', किसी भी स्थिति में ) को हटाना होगा ताकि परिणामी पैरेंथेसिस स्ट्रिंग वैध हो और कोई भी वैध स्ट्रिंग लौटाएं। एक पैरेंथेसिस स्ट्रिंग तब वैध होती है जब ये सभी मानदंड पूरे होते हैं:

  • यह खाली स्ट्रिंग है, केवल लोअरकेस वर्ण रखता है, या

  • इसे AB के रूप में लिखा जा सकता है (A को B के साथ जोड़कर), जहां A और B वैध स्ट्रिंग्स हैं, या

  • इसे (A) के रूप में लिखा जा सकता है, जहां A एक वैध स्ट्रिंग है।

इसलिए यदि इनपुट "a)b(c)d" जैसा है, तो आउटपुट "ab(c)d" होगा।

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

  • एक स्टैक st परिभाषित करें

  • i को 0 से s के आकार तक के लिए

    • यदि s[i] = '(', तो i को st में सम्मिलित करें

    • अन्यथा जब s[i] ')' हो, तो

      • यदि स्टैक खाली नहीं है, तो स्टैक से पॉप करें, अन्यथा s[i] = '*'

  • जब तक st खाली नहीं है,

    • s[स्टैक का शीर्ष तत्व] = '*'

    • स्टैक से पॉप करें

  • ans := खाली स्ट्रिंग

  • i को 0 से s के आकार - 1 तक के लिए

    • यदि s[i] '*' नहीं है, तो ans := ans + s[i]

  • ans लौटाएं

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    string minRemoveToMakeValid(string s) {
        stack <int> st;
        for(int i = 0; i < s.size(); i++) {
            if(s[i] == '(') st.push(i);
            else if(s[i] == ')') {
                if(!st.empty()) st.pop();
                else s[i] = '*';
            }
        }
        while(!st.empty()) {
            s[st.top()] = '*';
            st.pop();
        }
        string ans = "";
        for(int i = 0; i < s.size(); i++) {
            if(s[i] != '*') ans += s[i];
        }
        return ans;
    }
};

int main() {
    Solution ob;
    cout << (ob.minRemoveToMakeValid("a)b(c)d"));
}

इनपुट

"a)b(c)d"

आउटपुट

ab(c)d
  1. - C++ में स्ट्रिंग से ट्रेलिंग जीरो हटाना

    इस प्रोग्राम में हम देखेंगे कि C++ में स्ट्रिंग से ट्रेलिंग जीरो कैसे हटाएं। कभी-कभी कुछ स्ट्रिंग में ट्रेलिंग जीरो हो सकते हैं जैसे 00023054। इस प्रोग्राम को 실행 करने के बाद, यह केवल 23054 लौटाएगा। प्रारंभिक जीरो हटा दिए जाते हैं। इनपुट: ट्रेलिंग जीरो वाली स्ट्रिंग 000023500124 आउटपुट: 23500124 एल

  1. - पायथन में वैध पैरेंथेसिस बनाने के लिए न्यूनतम हटाने का प्रोग्राम

    मान लीजिए हमारे पास पैरेंथेसिस (, ) और लोअरकेस अंग्रेजी वर्णों वाली एक स्ट्रिंग s है। हमें न्यूनतम संख्या में पैरेंथेसिस (( या ), किसी भी स्थिति से) हटाने हैं ताकि परिणामी पैरेंथेसिस स्ट्रिंग वैध हो और अंत में कोई भी वैध स्ट्रिंग वापस करें। यहां पैरेंथेसिस स्ट्रिंग वैध होती है जब निम्नलिखित सभी मान

  1. - पायथन में पैरेंथेसिस को वैध बनाने के लिए न्यूनतम जोड़

    मान लीजिए हमारे पास ( और ) पैरेंथेसिस की एक स्ट्रिंग S है, हम किसी भी स्थिति पर न्यूनतम संख्या में पैरेंथेसिस जोड़ते हैं, ताकि परिणामी पैरेंथेसिस स्ट्रिंग वैध हो। एक पैरेंथेसिस स्ट्रिंग तभी वैध होती है जब - यह खाली स्ट्रिंग है इसे XY के रूप में लिखा जा सकता है (X को Y के साथ जोड़ा गया), जहां X और Y