酷代码 AI
菜单
服务商

加上using namespace std;用该输入方法

以下是添加 `using namespace std;` 并使用更符合你需求输入方式的 C++ 代码,用于判断由 6 种括号字符组成的字符串是否为合法括号序列: ```cpp #include <iostream> #include <stack> #include <string> using namespace std; // 判断字符串是否为合法括号序列 bool isValid(const string& s) { stack<char> st; for (char c : s) { if (c == '(' || c == '[' || c == '{') { st.push(c); } else { if (st.empty()) return false; char top = st.top(); st.pop(); if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) { return false; } } } return st.empty(); } int main() { int T; cin >> T; for (int i = 0; i < T; ++i) { string s; cin >> s; if (isValid(s)) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; } ``` 代码说明: 1. `isValid` 函数: - 该函数接收一个字符串 `s` 作为参数,用于判断该字符串是否为合法括号序列。 - 使用 `stack<char>` 类型的栈 `st` 来辅助判断。 - 遍历字符串中的每个字符: - 若字符为左括号(`(`, `[`, `{`),将其压入栈中。 - 若字符为右括号(`)`, `]`, `}`),检查栈是否为空。若为空,说明没有匹配的左括号,返回 `false`;若不为空,弹出栈顶元素,检查其是否与当前右括号匹配,若不匹配则返回 `false`。 - 遍历结束后,若栈为空,说明所有左括号都有匹配的右括号,返回 `true`;否则返回 `false`。 2. `main` 函数: - 首先读取一个整数 `T`,表示测试数据的组数。 - 通过 `for` 循环 `T` 次,每次读取一个字符串 `s`。 - 调用 `isValid` 函数判断该字符串是否合法,根据结果输出 `YES` 或 `NO`。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是输入字符串的长度,因为需要遍历字符串一次。 - 空间复杂度:$O(n)$,主要是栈的空间开销,最坏情况下栈的深度为 $n$。 [2025-12-04 18:06:29 | AI问答 | 656点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多