温馨提示×

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

c++
小樊
82
2024-09-25 08:35:13
栏目: 编程语言

使用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;
}

输出结果为:

匹配成功

0