#include <bits/stdc++.h>
using namespace std;
string s;
stack<char> st;
int main()
{
int flag=1;
int flagg=1;
char ch;
cin>>s;
int len=s.length();
char charcter[2][4]= {'(','[','{','<',')',']','}','>'};
for(int i=0; i<len; i++){
if(s[i]=='('||s[i]=='{'||s[i]=='['||s[i]=='<'){
st.push(s[i]);
}
if(s[i]==')'||s[i]=='}'||s[i]==']'||s[i]=='>'){
if(st.empty()){
cout<<"The "<<i+1<<" character '"<<s[i]<<"' is wrong."<<endl;
for(int j=0; j<4; j++) {
if (s[i] == charcter[1][j]) {
cout << "loss of left character " << charcter[0][j] << "." << endl;
}
}
flag=0;
break;
}
ch=st.top();
for(int j=0; j<4; j++){
if(ch!=charcter[0][j]&&s[i]==charcter[1][j]){
flagg=0;
cout<<"The "<<i+1<<" character '"<<s[i]<<"' is wrong."<<endl;
cout<<"loss of left character "<<charcter[0][j]<<"."<<endl;
flag=0;
break;
}
}
if(flagg)st.pop();
if(!flag)break;
}
}
if(!flag){
if(!st.empty()){
cout<<"loss of right character ";
while(!st.empty()){
char ch=st.top();
st.pop();
for(int j=0; j<4; j++){
if(charcter[0][j]==ch)
cout<<charcter[1][j];
}
}
cout<<'.'<<endl;
}
return 0;
}
int flaggg=0;
if(flag&&!st.empty()){
cout<<"Matching failure."<<endl;
cout<<"loss of right character ";
flaggg=1;
}
while(flag&&!st.empty()){
char ch=st.top();
st.pop();
for(int i=0; i<4; i++){
if(charcter[0][i]==ch)
cout<<charcter[1][i];
}
}
if(flaggg)cout<<'.'<<endl;
else if(flag)cout<<"right."<<endl;
return 0;
}
中国石油大学华东数据结构实验三
最新推荐文章于 2020-07-01 10:14:30 发布