酷代码 AI
菜单
服务商

C++ 超精简代码:用栈高效检查括号序列合法性

```cpp #include <iostream> #include <stack> #include <string> int main() { int T; std::cin >> T; while (T--) { std::string s; std::cin >> s; std::stack<char> st; bool valid = true; for (char c : s) { if (c == '(' || c == '[' || c == '{') { st.push(c); } else { if (st.empty() || (c == ')' && st.top() != '(') || (c == ']' && st.top() != '[') || (c == '}' && st.top() != '{')) { valid = false; break; } st.pop(); } } if (valid && st.empty()) { std::cout << "YES" << std::endl; } else { std::cout << "NO" << std::endl; } } return 0; } ``` 代码解释 1. 整体结构: - 首先读取测试用例的数量 `T`。 - 对于每个测试用例,读取一个字符串,然后使用栈来检查该字符串是否为合法的括号序列。 2. 栈的使用: - 遍历字符串中的每个字符,如果是左括号(`(`, `[`, `{`),将其压入栈中。 - 如果是右括号(`)`, `]`, `}`),检查栈是否为空或者栈顶元素是否与当前右括号匹配,如果不满足条件则将 `valid` 标记为 `false` 并跳出循环。 - 如果匹配成功,则弹出栈顶元素。 3. 结果判断: - 最后检查 `valid` 标记是否为 `true` 且栈是否为空,如果是则输出 `YES`,否则输出 `NO`。 这个代码将大部分逻辑都放在了 `main` 函数中,减少了函数调用,代码结构更加紧凑。 ######[AI问答 | 481点数解答 | 2025-12-03 18:40:58]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]