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

पता लगाएं कि किसी व्यंजक में डुप्लिकेट कोष्ठक है या नहीं C++ में


मान लें कि हमारे पास क्स्प एक्सप्रेशन है, और हमें यह जांचना होगा कि क्स्प के चारों ओर कोष्ठकों का डुप्लिकेट सेट है या नहीं। एक व्यंजक में डुप्लिकेट कोष्ठक होंगे यदि एक उप-अभिव्यक्ति एक से अधिक कोष्ठकों के सेट से घिरी होगी। उदाहरण के लिए, यदि व्यंजक −

. जैसा है
(5+((7−3)))

यहाँ उप-अभिव्यक्ति (7 - 3) दो कोष्ठक युग्मों से घिरी हुई है, इसलिए ये डुप्लिकेट कोष्ठक हैं।

इस समस्या को हल करने के लिए, हम ढेर का उपयोग करेंगे। हम क्स्प में प्रत्येक चरित्र के माध्यम से पुनरावृति करेंगे, और यदि चरित्र कोष्ठक '(', या किसी भी ऑपरेटर या ऑपरेंड को खोल रहा है, तो इसे स्टैक में धकेलें। जब चरित्र कोष्ठक बंद कर रहा हो, तो स्टैक से वर्णों को बार-बार पॉप करें जब तक मिलते-जुलते शुरुआती कोष्ठक नहीं मिल जाते हैं, और एक काउंटर का उपयोग किया जाता है, जिसका मूल्य कोष्ठकों के खुलने और बंद होने के बीच सामने आने वाले प्रत्येक वर्ण के लिए बढ़ाया जाएगा। जो काउंटर के मूल्य के बराबर है, 1 से कम है, फिर डुप्लिकेट कोष्ठक की जोड़ी पाया जाता है, अन्यथा नहीं मिला।

उदाहरण

#include<iostream>
#include<stack>
using namespace std;
bool hasDuplicateParentheses(string str) {
   stack<char> stk;
   for (int i = 0; i<str.length(); i++) {
      char ch = str[i];
      if (ch == ')') {
         char top = stk.top();
         stk.pop();
         int count = 0;
         while (top != '(') {
            count++;
            top = stk.top();
            stk.pop();
         }
         if(count < 1) {
            return true;
         }
      }
      else
         stk.push(ch);
   }
   return false;
}
int main() {
   string str = "(5+((7-3)))";
   if (hasDuplicateParentheses(str))
      cout << "Duplicate parentheses has Found";
   else
      cout << "No Duplicates parentheses has Found ";
}

आउटपुट

Duplicate parentheses has Found

  1. पता लगाएं कि पृष्ठ को कोण से घुमाना संभव है या नहीं C++

    इस समस्या में, हमें तीन बिंदुओं के निर्देशांक दिए गए हैं जो एक पृष्ठ पर स्थित हैं। हमारा काम यह पता लगाना है कि पृष्ठ को कोण से घुमाना संभव है या नहीं। पृष्ठ का रोटेशन इस तरह से किया जाता है कि x की नई स्थिति y की पुरानी स्थिति है, y की नई स्थिति z की पुरानी स्थिति है। और रोटेशन के आधार पर हा

  1. C++ में डुप्लीकेट सबट्री खोजें

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें सभी डुप्लिकेट सबट्री खोजने होंगे। इसलिए प्रत्येक प्रकार के डुप्लिकेट सबट्री के लिए, हमें उनमें से किसी एक का रूट नोड वापस करना होगा। तो मान लीजिए हमारे पास − . जैसा एक पेड़ है डुप्लीकेट सबट्री हैं - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  1. C++ में सभी डुप्लीकेट सबट्री खोजें

    विचार करें कि हमारे पास एक बाइनरी ट्री है। हमें यह पता लगाना है कि पेड़ में कुछ डुप्लिकेट सबट्री हैं या नहीं। मान लीजिए हमारे पास नीचे जैसा एक बाइनरी ट्री है - आकार 2 के दो समान सबट्री हैं। प्रत्येक सबट्री में डी, बीडी और बीई दोनों भी डुप्लीकेट सबट्री हैं। हम ट्री सीरियलाइजेशन और हैशिंग प्रक्रिया