1 条题解
-
0
方法思路
- 栈的应用:使用栈来检查括号的有效性。遇到左括号时压栈,遇到右括号时检查栈顶是否匹配。
- 计数有效括号对:在每次成功匹配一对括号时,增加计数器。
- 最终检查:遍历完字符串后,栈应为空,否则说明有未匹配的括号。
代码实现
Java
import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 0; i < t; i++) { String s = br.readLine(); sb.append(isValidBrackets(s)).append("\n"); } System.out.print(sb); } static String isValidBrackets(String s) { char[] stack = new char[s.length()]; int top = -1; int count = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); switch (c) { case '(': case '{': case '[': stack[++top] = c; break; case ')': if (top < 0 || stack[top--] != '(') return "False"; count++; break; case '}': if (top < 0 || stack[top--] != '{') return "False"; count++; break; case ']': if (top < 0 || stack[top--] != '[') return "False"; count++; break; } } return (top == -1) ? String.valueOf(count) : "False"; } }
Python
def is_valid_brackets(s): stack = [] pairs = {')': '(', '}': '{', ']': '['} count = 0 for char in s: if char in '({[': stack.append(char) elif char in ')}]': if not stack or stack.pop() != pairs[char]: return False count += 1 return count if not stack else False t = int(input()) for _ in range(t): s = input().strip() result = is_valid_brackets(s) print(result)
C++
#include <iostream> #include <stack> #include <unordered_map> #include <string> using namespace std; string isValidBrackets(string s) { stack<char> st; unordered_map<char, char> pairs = {{')', '('}, {'}', '{'}, {']', '['}}; int count = 0; for (char c : s) { if (c == '(' || c == '{' || c == '[') { st.push(c); } else if (c == ')' || c == '}' || c == ']') { if (st.empty() || st.top() != pairs[c]) { return "False"; } st.pop(); count++; } } if (st.empty()) { return to_string(count); } else { return "False"; } } int main() { int t; cin >> t; cin.ignore(); for (int i = 0; i < t; i++) { string s; getline(cin, s); cout << isValidBrackets(s) << endl; } return 0; }
- 1
信息
- ID
- 33
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者