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

C++ में वैध पैरेंथेसिस स्ट्रिंग (Valid Parenthesis String)


मान लीजिए हमारे पास एक अभिव्यक्ति है। अभिव्यक्ति में कुछ पैरेंथेसिस हैं; हमें जांचना है कि पैरेंथेसिस संतुलित (balanced) हैं या नहीं। पैरेंथेसिस का क्रम (), {} और [] है। मान लीजिए दो स्ट्रिंग हैं। "()[(){()}]" यह वैध है, लेकिन "{[}]" अवैध है।

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

  • अभिव्यक्ति को तब तक पार करें जब तक यह समाप्त न हो जाए:
    • यदि वर्तमान वर्ण प्रारंभिक ब्रैकेट है जैसे (, { या [, तो स्टैक में पुश करें
    • यदि वर्तमान वर्ण समापन ब्रैकेट है जैसे ), } या ], तो स्टैक से पॉप करें, और
    • जांचें कि क्या पॉप किया गया ब्रैकेट वर्तमान वर्ण का संगत प्रारंभिक ब्रैकेट है, तो यह ठीक है, अन्यथा, यह संतुलित नहीं है।
  • स्ट्रिंग समाप्त होने के बाद, यदि स्टैक में कुछ प्रारंभिक ब्रैकेट बचे हैं, तो स्ट्रिंग संतुलित नहीं है।

उदाहरण (C++)

#include <iostream>
#include <stack>
using namespace std;

bool isBalancedExp(string exp) {
    stack<char> stk;
    char x;
    for (int i = 0; i < exp.length(); i++) {
        if (exp[i] == '(' || exp[i] == '[' || exp[i] == '{') {
            stk.push(exp[i]);
            continue;
        }
        if (stk.empty())
            return false;
        switch (exp[i]) {
        case ')':
            x = stk.top();
            stk.pop();
            if (x == '{' || x == '[')
                return false;
            break;
        case '}':
            x = stk.top();
            stk.pop();
            if (x == '(' || x == '[')
                return false;
            break;
        case ']':
            x = stk.top();
            stk.pop();
            if (x == '(' || x == '{')
                return false;
            break;
        }
    }
    return (stk.empty());
}

int main() {
    string expresion = "()[(){()}]";
    if (isBalancedExp(expresion))
        cout << "यह संतुलित अभिव्यक्ति है";
    else
        cout << "यह असंतुलित अभिव्यक्ति है";
}

इनपुट

"()[(){()}]"

आउटपुट

यह संतुलित अभिव्यक्ति है
  1. C++ में वैलिड सुडोकू C++ में वैलिड सुडोकू

    मान लीजिए हमें 9×9 मैट्रिक्स दिया गया है जिसे सुडोकू कहा जाता है। कार्य यह जांचना है कि दिया गया सुडोकू पैटर्न मान्य है या नहीं। सामान्य तौर पर, एक सुडोकू बोर्ड इस तरह दिखता है, सुडोकू के नियम - हर रो में 1-9 की रेंज में एक नंबर होता है हर कॉलम में 1-9 की रेंज में नंबर होते हैं। 3×3 का प्रत्येक ब्

  1. - C++ में स्ट्रिंग को टोकनाइज़ करना

    इस खंड में, हम देखेंगे कि C++ में स्ट्रिंग्स को कैसे टोकनाइज़ किया जाए। C में हम कैरेक्टर सरणी के लिए strtok() फंक्शन का उपयोग कर सकते हैं। यहां हमारे पास एक स्ट्रिंग क्लास है। अब हम देखेंगे कि उस स्ट्रिंग से किसी डिलीमीटर का उपयोग करके स्ट्रिंग को कैसे काटा जाए। C++ सुविधा का उपयोग करने के लिए, हम

  1. - C++ में स्ट्रिंग को टोकनाइज़ कैसे करें?

    पहला तरीका शब्दों को स्पेस से अलग करके पढ़ने के लिए stringstream का उपयोग करना है। यह थोड़ा सीमित है लेकिन अगर आप उचित चेक प्रदान करते हैं तो यह कार्य काफी अच्छी तरह से करता है। उदाहरण #include <vector> #include <string> #include <sstream> using namespace std; int main() {