我被要求作为一项额外的编程挑战,看看大括号是否在随机字符串或字符中匹配,如下所示:{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}");
}
是什么让你认为它没有任何作用?确实如此。它检查大括号,但你没有对返回做任何事情checkBraces
,顺便说一句,应该返回一个bool
,不是一个int
.
您的意思可能是:
if (checkBraces ("{1+1}"))
cout << "matching";
else
cout << "not matching";
专家提示:学习如何使用调试器。在开始编写“hello world”之外的任何内容之前,您应该学习如何调试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)