题目1153:括号匹配问题
由于左括号是否匹配需要遍历整个串后才可判断,所以需要记录位置,可以在入栈时直接将左括号所在下标入栈
#include<iostream>
#include<stack>
using namespace std;
int main()
{
char s[101];
while (cin >> s)
{
stack<int> stk;
int flag[101] = {0};
char out[101] = {' '};
int i=0;
cout << s << endl;
while (s[i] != '\0')
{
out[i] = ' ';
if (s[i] == '(')
{
stk.push(i);
}
if (s[i] == ')')
{
if (stk.empty())
{
out[i] = '?';
}
else
{
stk.pop();
}
}
i++;
}//end of while('\0')
while (!stk.empty())
{
out[stk.top()] = '$';
stk.pop();
}
cout << out << endl;
}
return 0;
}