मुझे बोनस प्रोग्रामिंग चुनौती के रूप में पूछा गया है कि क्या ब्रेसिज़ यादृच्छिक स्ट्रिंग या इस तरह के चार में मेल खाते हैं: {1 + 1} यह 1 लौटाएगा, जबकि {1 + 1}) होगा वापसी 0 यह मेरे पास अभी तक है लेकिन ऐसा कुछ भी प्रतीत नहीं होता है। कोई भी मदद बहुत अच्छी रहेगी? धन्यवादसी ++ जांचें कि ब्रेसिज़ मैच
//bonus.cpp
#include <iostream>
#include <string>
#include <queue>
#include <stack>
using namespace std;
int checkBraces (string s)
{
//int myLength = s.length();
std::stack<int> stack;
char d;
for (int i = 0; i < s.length(); i++)
{
char c = s[i];
if (c == '(')
{
stack.push(c);
}
else if (c == '[')
{
stack.push(c);
}
else if (c == '{')
{
stack.push(c);
}
else if (c == ')')
{
if (stack.empty())
{
return false;
}
else
{
d = stack.top();
stack.pop();
if (d != '(')
{
return false;
}
}
}
else if (c == ']')
{
if (stack.empty())
{
return false;
}
else
{
d = stack.top();
stack.pop();
if (d != '[')
{
return false;
}
}
}
else if (c == '}')
{
if (stack.empty())
{
return false;
}
else
{
d = stack.top();
stack.pop();
if (d != '{')
{
return false;
}
}
}
}
if (stack.empty()) return true;
else return false;
}
int main()
{
cout << "This program checks brace ([{}]) matching in a string." << endl;
checkBraces ("{1+1}");
}
क्या आपने वास्तव में क्या चल रहा है यह देखने के लिए अपने डीबगर में कोड के माध्यम से कदम उठाने का प्रयास किया था? –
* कुछ भी नहीं लगता है * - यहां अधिक जानकारी का उपयोग कर सकता है। –
आपको काफी हद तक अनावश्यकता मिली है। शायद आपके पास 'bool pop_if_possible (std :: stack, char)' विधि होनी चाहिए ताकि आप 'if (c ==')'&& pop_if_possible (stack, '(')) लिख सकें {{झूठी वापसी; } ' –
MSalters