C语言输入一串包含大中小括号的字符串,输出括号是否匹配
时间: 2024-10-13 18:02:30 浏览: 36
使用C语言解决字符串匹配问题的方法
在C语言中,判断括号是否匹配可以使用栈数据结构来解决这个问题。这里是一种基本的算法步骤:
1. 初始化两个指针,一个指向字符串的开始(left),另一个指向当前检查的位置(right)。
2. 创建一个空的栈来保存左括号。
3. 遍历字符串:
- 如果遇到左括号(如'('、'{'或'['),将其压入栈中。
- 如果遇到右括号(如')'、'}'或']'):
- 检查栈顶元素是否与当前右括号配对(例如,'('和')','{'和'}','['和']')。如果匹配,弹出栈顶元素;如果不匹配,返回false(表示括号不匹配)。
- 如果遍历到字符串结束而栈不为空,说明还有未匹配的左括号,返回false。
4. 如果整个字符串都遍历完,且栈也为空,说明所有括号都是匹配的,返回true。
以下是简单的伪代码描述这个过程:
```c
bool is_balanced(char* str) {
stack<char> brackets;
for (char c : str) {
if (c == '(' || c == '{' || c == '[') {
brackets.push(c);
} else if (c == ')' && !brackets.empty() && brackets.top() == '(') {
brackets.pop();
} else if (c == '}' && !brackets.empty() && brackets.top() == '{') {
brackets.pop();
} else if (c == ']' && !brackets.empty() && brackets.top() == '[') {
brackets.pop();
} else {
return false; // 不匹配的右括号
}
}
return brackets.empty(); // 判断栈是否为空
}
```
阅读全文