括号匹配是指在编程中,判断括号是否匹配的一种操作。在
C++中,可以使用栈来实现
括号匹配。
以下是一个简单的
括号匹配算法的实现步骤:
1. 创建一个空栈。
2. 遍历输入的字符串,对于每个字符:
- 如果是左括号('('、'['、'{'),将其压入栈中。
- 如果是右括号(')'、']'、'}'),则判断栈是否为空:
- 如果栈为空,说明右括号没有对应的左括号,括号不匹配,返回false。
- 如果栈不为空,弹出栈顶元素,并判断弹出的左括号与当前右括号是否匹配:
- 如果不匹配,括号不匹配,返回false。
3. 遍历完字符串后,如果栈为空,则说明所有括号都匹配,返回true;否则,说明还有未匹配的左括号,返回false。
下面是一个示例代码实现:
#include <iostream>#include <stack>#include <string>bool isBracketMatched(const std::string& str) {std::stack<char> brackets;for (char c : str) {if (c == '(' || c == '[' || c == '{') {brackets.push(c);} else if (c == ')' || c == ']' || c == '}') {if (brackets.empty()) {return false;}char top = brackets.top();brackets.pop();if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) {return false;}}}return brackets.empty();}int main() {std::string str;std::cout << "请输入一个字符串:";std::cin >> str;if (isBracketMatched(str)) {std::cout << "括号匹配" << std::endl;} else {std::cout << "括号不匹配" << std::endl;}return 0;}
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/13443.html