括号匹配c++pta
时间: 2024-04-06 14:26:45 浏览: 74
括号匹配是指在编程中,判断括号是否匹配的一种操作。在C++中,可以使用栈来实现括号匹配。
以下是一个简单的括号匹配算法的实现步骤:
1. 创建一个空栈。
2. 遍历输入的字符串,对于每个字符:
- 如果是左括号('('、'['、'{'),将其压入栈中。
- 如果是右括号(')'、']'、'}'),则判断栈是否为空:
- 如果栈为空,说明右括号没有对应的左括号,括号不匹配,返回false。
- 如果栈不为空,弹出栈顶元素,并判断弹出的左括号与当前右括号是否匹配:
- 如果不匹配,括号不匹配,返回false。
3. 遍历完字符串后,如果栈为空,则说明所有括号都匹配,返回true;否则,说明还有未匹配的左括号,返回false。
下面是一个示例代码实现:
```cpp
#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;
}
```
阅读全文