如何使用c++ stack类实现括号匹配

avatar
作者
猴君
阅读量:0

使用C++的stack类可以实现括号匹配。具体步骤如下:

  1. 定义一个stack对象,用于存储左括号。

  2. 遍历输入的字符串,当遇到左括号时,将其压入stack中。

  3. 当遇到右括号时,检查stack是否为空,如果为空,则说明没有匹配的左括号,返回false;否则,将栈顶的左括号弹出,检查是否与当前的右括号匹配,如果匹配,则继续遍历,否则返回false。

  4. 遍历结束后,检查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; } 

输出结果为:

匹配成功 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!