2 solutions
-
2
#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; stack<char> stk; map<char,int> h={{'(',1},{'[',2},{']',3},{')',4}}; //定义括号匹配 bool st=1; int n=s.size(); for(int i=0;i<n;i++) { if(h[s[i]]<=2) //左括号直接入栈 { stk.push(s[i]); } else //右括号 { if(stk.size()&&h[stk.top()]+h[s[i]]==5) //有元素且匹配 { stk.pop(); //删除当前栈定元素,继续判断下个字符 continue; } else //不匹配 { st=false; } } } if(stk.size()) st=false; //整个字符匹配完了栈中还有元素 if(st==true) cout<<"OK"; else cout<<"Wrong"; return 0; }
-
1
#include <bits/stdc++.h> using namespace std; const int N=300; char a[N]; stack<int>k; int main() { bool fx=true; int i; int s_1=0,b_1=0,s_2=0,b_2=0; cin>>a; i=strlen(a); for(int j=0;j<i;j++) { if(a[j]=='[') { s_2++; k.push(1); fx=true; continue; } if(a[j]==']') { b_2++; if(b_2>s_2) { fx=true; break; } if(k.top()==1) { fx=false; k.pop(); } else break; if(s_2==b_2)fx=false; continue; } if(a[j]=='(') { s_1++; k.push(2); continue; } if(a[j]==')') { b_1++; if(b_1>s_1) { fx=true; break; } if(k.top()==2) { fx=false; k.pop(); } else break; if(s_1==b_1)fx=false; continue; } } if(s_2>b_2 || s_1>b_1) { fx=true; } if(fx==true)cout<<"Wrong"; if(fx==false) cout<<"OK"; return 0; }
- 1
Information
- ID
- 967
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 65
- Accepted
- 13
- Uploaded By