PTA 7-3 括号匹配 (25 分)

    xiaoxiao2022-07-02  108

    给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。

    输入格式:

    输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

    输出格式:

    如果括号配对,输出yes,否则输出no。

    输入样例1:

    sin(10+20)

    输出样例1:

    yes

    输入样例2:

    {[}]

    输出样例2:

    no #include<iostream> #include<stdio.h> #include<stack> #include<string> using namespace std; int main() { const int MAX = 100; char str[MAX]; int len = 0;//字符串总长度 int flag = 1; cin.getline(str,MAX); stack<char> s1; char c; for(int i = 0;i<MAX;i++) { if(str[i]=='\0') { len = i+1; break; } } for(int i = 0;i<len;i++) { if(str[i]=='['||str[i]=='{'||str[i]=='(') { c = str[i]; s1.push(c); } if(str[i]==']') { c = str[i]; if(!s1.empty()) { if(s1.top()!='[') { flag = 0; break; } else{ s1.pop(); } } else { flag = 0; break; } } if(str[i]=='}') { c = str[i]; if(!s1.empty()) { if(s1.top()!='{') { flag = 0; break; } else{ s1.pop(); } } else { flag = 0; break; } } if(str[i]==')') { c = str[i]; if(!s1.empty()) { if(s1.top()!='(') { flag = 0; break; } else{ s1.pop(); } } else { flag = 0; break; } } } if(flag && s1.empty()){ printf("yes"); } else{ printf("no"); } return 0; }

     

    最新回复(0)