我需要帮助解决这个问题。我正在得到错误,这是给了下面和代码也给出。 这个程序是要找出支架是否平衡。
#include <bits/stdc++.h>
#include<stack>
using namespace std;
// Complete the isBalanced function below.
string isBalanced(string s) {
stack <char> st;
for(auto c:s){
switch (c){
case '(':
case '{':
case '[':
st.push(c);
break;
case '}':
if(st.empty() || st.top()!='{' )
return "NO";
st.pop();
break;
case ']':
if(st.empty() || st.top()!='[')
return "NO";
st.pop();
break;
case ')':
if(st.empty() || st.top()!='(')
return "NO";
st.pop();
break;
default: break;
}
}
}
int main()
{
ofstream fout(getenv("OUTPUT_PATH"));
int t;
cin >> t;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
for (int t_itr = 0; t_itr < t; t_itr++) {
string s;
getline(cin, s);
string result = isBalanced(s);
fout << result << "\n";
}
fout.close();
return 0;
}
this is a program to check bracket is balanced or not.
这是我写的代码,它给我的错误。请帮助我解决这个问题。 我已经尝试添加堆栈头文件,但我仍然得到同样的错误。
***Solution.cpp: In function ‘std::__cxx11::string isBalanced(std::__cxx11::string)’:
Solution.cpp:7:18: error: control reaches end of non-void function [-Werror=return-type]
stack <char> st;
^~
cc1plus: some warnings being treated as errors***
当for
循环完成而不在其中执行return
语句时,将不会在isbalanced
函数中执行return
语句。
似乎您应该添加代码来检查堆栈st
是否为空,并根据循环后的结果返回正确的内容。