使用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;
}
输出结果为:
匹配成功