链接:https://codeforces.com/contest/1452/problem/C
题意:变相的括号匹配,只是不在乎位序,只要前后呼应就可以,问可以删除多少对括号
思路:直接用两个变量来表示(,[的数量,一旦遇见)]就减少,每删除一个就将答案加一。
代码:
#include <bits/stdc++.h> using namespace std; int main() { int t; cin >> t; while(t--) { string s; cin >> s; int a = 0, b = 0, ans = 0; for(int i = 0; i < s.size(); i++) { if(s[i] == '(') a++; else if(s[i] == '[') b++; else if(s[i] == ')' && a > 0) { a--; ans++; } else if(s[i] == ']' && b > 0) { b--; ans++; } } cout << ans << endl; } return 0; }
#include <bits/stdc++.h>using namespace std;
int main() {int t;cin >> t;while(t--) {string s;cin >> s;int a = 0, b = 0, ans = 0;for(int i = 0; i < s.size(); i++) {if(s[i] == '(') a++;else if(s[i] == '[') b++;else if(s[i] == ')' && a > 0) {a--; ans++;}else if(s[i] == ']' && b > 0) {b--; ans++;}}cout << ans << endl;}return 0;}