68求助,感觉思路没什么问题
查看原帖
68求助,感觉思路没什么问题
1040770
Demo_B11楼主2024/6/9 16:14

此题Code:

#include<bits/stdc++.h>
using namespace std;
string s;
bool vis[110];
inline char Hou(char c){
	if(c=='(')return ')';
	if(c=='[')return ']';
}
inline char Qian(char c){
	if(c==')')return '(';
	if(c==']')return '[';
}
inline bool Is(char c){
	return(c=='(' || c=='[' );
}
struct c{
	char c;
	int id;
}w[110],t;
stack<c> S;
int main(){
	for(int i=1;i<=105;++i){
		vis[i]=1; 
	}
	cin>>s;
	for(int i=1;i<=s.size();++i){
		w[i].c=s[i-1];
		w[i].id=i;
	}
	for(int i=1;i<=s.size();++i){
		if(S.empty()){
			S.push(w[i]);
		}
		else{
			t=S.top();
			if(Is(t.c) && Hou(t.c)==w[i].c){
				vis[t.id]=vis[i]=0;
				S.pop();
			}else{
				S.push(w[i]);
			}
		}
	}
	for(int i=1;i<=s.size();++i){
		if(!vis[i]){putchar(w[i].c);}
		else{
			if(Is(w[i].c))
				putchar(w[i].c),putchar(Hou(w[i].c));
			else
				putchar(Qian(w[i].c)),putchar(w[i].c);
		}
	}
	return 0;
}
2024/6/9 16:14
加载中...