sind Ich wurde als eine Bonus-Programmieraufgabe gefragt, ob geschweifte Klammern in einer zufälligen Zeichenfolge oder einem Zeichen wie folgt übereinstimmen: {1 + 1} dies würde 1 zurückgeben, während {1 + 1}) würde return 0. Dies ist, was ich bisher habe, aber es scheint nichts zu tun. Jede Hilfe wäre großartig? dankeC++ Überprüfen, ob geschweifte Klammern
//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}");
}
Haben Sie versucht, den Code in Ihrem Debugger durchzugehen, um zu sehen, was gerade passiert? –
* scheint nichts zu tun * - könnte hier mehr Informationen verwenden. –
Sie haben ziemlich viel Redundanz. Vielleicht sollten Sie eine 'bool pop_if_possible (std :: stack, char)' -Methode haben, damit Sie schreiben können: 'if (c ==') '&&! Pop_if_possible (stack,' (')) {return false; } ' –
MSalters