7-3 括號匹配 (25 分)
阿新 • • 發佈:2018-11-28
給定一串字元,不超過100個字元,可能包括括號、數字、字母、標點符號、空格,程式設計檢查這一串字元中的( ) ,[ ],{ }是否匹配。
輸入格式:
輸入在一行中給出一行字串,不超過100個字元,可能包括括號、數字、字母、標點符號、空格。
輸出格式:
如果括號配對,輸出yes,否則輸出no。
輸入樣例1:
sin(10+20)
輸出樣例1:
yes
輸入樣例2:
{[}]
輸出樣例2:
no
#include<stdio.h> #include<map> #include<iostream> #include<stack> #include <algorithm> using namespace std; int main() { string s; getline(cin,s); int len=s.size(); map<char,char> m; m['(']=')'; m['{']='}'; m['[']=']'; stack <char> a; int flag=1; for(int i=0;i<len;i++) { if(s[i]=='(' || s[i]=='{' || s[i]=='[') a.push(s[i]); else if(s[i]==')' || s[i]=='}' || s[i]==']') { if(a.size() && m[a.top()]==s[i]) a.pop(); else { flag=0; break; } } } if(flag && a.size() == 0) printf("yes\n"); else printf("no\n"); return 0; }