括号匹配且只能用中括号括小括号c++怎么写
时间: 2024-09-17 17:01:03 浏览: 33
c++括号匹配算法.zip
在C++中,检查字符串中的括号是否匹配并且仅允许使用中括号[]是一种常见的编程练习。你可以使用栈数据结构来解决这个问题,因为栈的特点是后进先出。下面是一个简单的递归函数示例:
```cpp
#include <stack>
#include <string>
bool isValid(std::string s) {
std::stack<char> brackets;
// 中括号的开闭合字符
const char open[] = {'[', '{', '('};
const char close[] = {']', '}', ')'};
for (char c : s) {
if (open[0] == c) { // 如果是开放括号
brackets.push(c);
} else if (close[0] == c && !brackets.empty()) { // 如果是关闭括号,并且栈非空且匹配
if (close[close_idx] != brackets.top()) return false; // 匹配失败
brackets.pop(); // 移除栈顶元素
} else {
return false; // 非中括号或者括号未闭合就遇到关闭括号
}
}
// 判断剩余栈是否为空,为空表示所有括号都已正确匹配
return brackets.empty();
}
int main() {
std::string test_cases[] = {"()", "[]", "[{()}]", "(]", "[[[]]]"};
for (const auto& case_str : test_cases) {
bool result = isValid(case_str);
if (result)
std::cout << case_str << " is valid.\n";
else
std::cout << case_str << " is not valid.\n";
}
return 0;
}
```
这个程序会检查输入字符串中的括号是否只包含中括号,并且所有的括号都是成对出现并正确匹配的。
阅读全文