ybt 1354:括弧匹配检验
【题目考点】 1. 栈 【解题思路】遍历字符串,左括号入栈,遇到右括号时,看栈顶括号与右括号是否能配对。如果两个括号都是小括号或中括号,那么二者配对,左括号出栈。否则括号不匹配。
如果遍历到右括号时,发现栈空,那么存在右括号无法匹配。
如果遍历结束时,栈不为空,那么存在左括号无法匹配。
#include解法2:使用C++ STLusing namespace std; int main() { char s[260], stk[260]; scanf("%s", s); int top = 0, len; len = strlen(s); for(int i = 0; i < len; ++i) { if(s[i] == '(' || s[i] == '[')//左括号入栈 stk[++top] = s[i]; else if(s[i] == ')' || s[i] == ']') { if(top == 0 || s[i] == ')' && stk[top] != '(' || s[i] == ']' && stk[top] != '[')//栈空或括号不配对 { printf("Wrong");//无法配对 return 0; } else top--; } } if(top == 0)//如果栈不空,则无法配对 printf("OK"); else printf("Wrong"); return 0; }
#includeusing namespace std; int main() { string s; cin >> s; stack stk; for(int i = 0; i < s.length(); ++i) { if(s[i] == '(' || s[i] == '[')//左括号入栈 stk.push(s[i]); else if(s[i] == ')' || s[i] == ']') { if(stk.empty() || s[i] == ')' && stk.top() != '(' || s[i] == ']' && stk.top() != '[')//栈空或括号不配对 { cout << "Wrong";//无法配对 return 0; } else stk.pop(); } } if(stk.empty())//如果栈不空,则无法配对 cout << "OK"; else cout << "Wrong"; return 0; }



