括号匹配问题
(写的时候,自己给自己挖了个坑,把“=”写成“==”了)
#include<stdio.h>
#include<stack>
using namespace std;
stack<int> S;//定义一个堆栈
char input[110];
char output[110];
int main(){
while(scanf("%s",input)!=EOF){
int i;
for(i=0;input[i]!=0;i++){
if(input[i]=='('){ //若遇到左括号
S.push(i);//将其数组下标放入堆栈中
output[i]=' ';
}
else if(input[i]==')'){
if(S.empty()==false){//若遇到右括号 且堆栈非空
S.pop();//从栈中弹出与之匹配的左括号
output[i]=' ';
}
else output[i]='?';//若堆栈为空,则无法找到左括号与其匹配
}
else output[i]=' ';//若为其他字符,与括号匹配无关,输出为空格
}
while(!S.empty()){//当字符串遍历完成后,尚留在堆栈中的左括号无法匹配
output[S.top()]='$';
S.pop();
}
// output[i]=0;
puts(input);
puts(output);
}
return 0;
}