栈的运用以及STL stack的用法
题目描述:
在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$“标注,不能匹配的右括号用”?"标注。
题意:
- 字符串匹配,如果 ‘(’ 有 ‘)’ 与其匹配,则匹配的两个位置都用空格 ’ ’ 标注
- 出现除左右括号外的其他字符,则用空格 ’ ’ 标注
- 当左括号 ‘(’ 没有右括号 ‘)’ 与其匹配,则用 ‘$’ 标注
- 相反,当右括号 ‘)’ 没有左括号 ‘(’ 与其匹配,则用 ’?‘ 标注
- 且匹配中任何一个左括号 ’(‘ 都与在它右边且距离 最近 的右括号 ’(‘ 匹配。
- 最后输出这一行标注即可;
解法:
- 栈的模拟
#include<bits/stdc++.h>
using namespace std;
stack<int>st;
char a[120];
int main(){
string s;
while(getline(cin,s)) {
memset(a,0,sizeof(a));
while(!st.empty()) st.pop<