问题 E: 括弧合法性检测(STL之栈的运用)

    xiaoxiao2025-07-11  6

    给定一个只包含字符'(',')','{','}','['和']'的字符串,确定输入字符串是否有效。 有效的字符串应同时满足一下两个条件: 1.必须使用相同类型的括号关闭左括号。 2.必须以正确的顺序关闭左括号。 请注意,空字符串也被视为有效。

    输入

    第一行:一行长度不超过100个字符的待检测字符串

    输出

    第一行:如果括弧合法则输出Yes,否则输出No

    样例输入

    ()

    样例输出

    Yes #include<bits/stdc++.h> #define int long long using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(0); string str; cin >> str; stack<char>s; while(!s.empty()) s.pop(); for(int i = 0;i < str.length(); i++) { if(str[i] == '(' || str[i] == '[' ||str[i] == '{') s.push(str[i]); else if(str[i] == ')' && s.top() == '(' && !s.empty()) s.pop(); else if(str[i] == ']' && s.top() == '[' && !s.empty()) s.pop(); else if(str[i] == '}' && s.top() == '{' && !s.empty()) s.pop(); else s.push(str[i]); } if(!s.empty()) cout << "No" << endl; else cout << "Yes" << endl; return 0; }

     

    最新回复(0)