C++如何判断字符串中左右括号是否配对
时间: 2023-05-28 11:02:48 浏览: 106
判断左右括号是否匹配
可以使用栈的数据结构来判断字符串中左右括号是否配对。具体做法为:
1. 创建一个栈。
2. 从左到右遍历字符串中的每一个字符。
3. 如果当前字符为左括号(即“(”、“{”、“[”),则将其入栈。
4. 如果当前字符为右括号(即“)”、“}”、“]”),则判断栈顶是否为与之匹配的左括号。如果不匹配,则说明左右括号不配对;如果匹配,则将栈顶元素出栈。
5. 当字符串遍历完毕后,判断栈中是否还有元素。如果有,则说明左右括号不配对;否则说明左右括号配对。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 100
int main(void)
{
char s[MAX_LEN]; // 字符串
char stack[MAX_LEN]; // 栈
int top = -1; // 栈顶指针
printf("请输入一个字符串:");
scanf("%s", s);
int i = 0;
while (s[i] != '\0')
{
if (s[i] == '(' || s[i] == '{' || s[i] == '[')
{
// 如果是左括号,则入栈
stack[++top] = s[i];
}
else if (s[i] == ')' || s[i] == '}' || s[i] == ']')
{
// 如果是右括号,则判断与栈顶元素是否匹配
if (top == -1 || (s[i] == ')' && stack[top] != '(') || (s[i] == '}' && stack[top] != '{') || (s[i] == ']' && stack[top] != '['))
{
printf("左右括号不配对\n");
return 1; // 退出程序
}
else
{
// 匹配则出栈
top--;
}
}
i++;
}
if (top == -1)
{
printf("左右括号配对\n");
}
else
{
printf("左右括号不配对\n");
}
return 0;
}
```
阅读全文