社区讨论

增麽回事???????????哥哥姐姐们快看看,56

P1241括号序列参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mbu4ncg1
此快照首次捕获于
2025/06/13 09:26
9 个月前
此快照最后确认于
2025/11/04 07:13
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
string s;
int len,cnt,v,stt,f;
char a[1000001],z[1000001];
stack<char> q,p;
int main(){
	cin>>s;
	len=s.size();
	for(int i=0;i<len;i++){
		if(s[i]=='('||s[i]=='['){
			stt=i;
			f=1;
			break;
		}
	}
	if(f==0){
		for(int i=0;i<len;i++){
			if(s[i]==']')cout<<"[]";
			else cout<<"()";
		}
		return 0;
	}
	for(int i=stt;i<len;i++){
		if(s[i]=='['||s[i]=='(') q.push(s[i]); 
		else {
			if(s[i]==')'&&q.top()=='('){
				if(!q.empty()){
					q.pop();
					cnt+=2;
					a[cnt]=')';
					a[cnt-1]='(';
				}
			}else if(s[i]==']'&&q.top()=='['){
				if(!q.empty()){
					q.pop();cnt+=2;
					a[cnt]=']';
					a[cnt-1]='[';
				}
			}
			else if(s[i]==']'&&q.top()!='['){
				cnt+=2;
				a[cnt]=']';
				a[cnt-1]='[';
			}
			else if(s[i]==')'&&q.top()!='('){
				cnt+=2;
				a[cnt]=')';
				a[cnt-1]='(';
			}
		}
	}
	while(!q.empty()){
		z[++v]=q.top();
		q.pop();
	}
	for(int i=v;i>=1;i--){
		if(z[i]=='(')cout<<"()";
		else cout<<"[]";
	}
	for(int i=1;i<=cnt;i++) cout<<a[i]; 
	cout<<'\n';
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...