阅读量:0
使用C++的stack类可以实现括号匹配。具体步骤如下:
定义一个stack对象,用于存储左括号。
遍历输入的字符串,当遇到左括号时,将其压入stack中。
当遇到右括号时,检查stack是否为空,如果为空,则说明没有匹配的左括号,返回false;否则,将栈顶的左括号弹出,检查是否与当前的右括号匹配,如果匹配,则继续遍历,否则返回false。
遍历结束后,检查stack是否为空,如果为空,则说明所有的括号都匹配成功,返回true;否则,返回false。
下面是具体的C++代码实现:
#include <iostream> #include <stack> #include <string> using namespace std; bool isMatch(string s) { stack<char> st; for (int i = 0; i < s.size(); i++) { if (s[i] == '(') { st.push(')'); } else if (s[i] == '[') { st.push(']'); } else if (s[i] == '{') { st.push('}'); } else if (st.empty() || st.top() != s[i]) { return false; } else { st.pop(); } } return st.empty(); } int main() { string s = "()[]{}"; cout << (isMatch(s) ? "匹配成功" : "匹配失败") << endl; return 0; }
输出结果为:
匹配成功