目录
一、思想
实现对括号的匹配,用栈来实现。对数组长度进行求值,从而对栈的大小进行开辟空间。对接收到的字符判断是否是左括号,如果是进行入栈,否则就对右括号和栈顶的值进行判断,如果不相等,则不满足括号匹配。
二、代码
//括号匹配
bool IsMarch(const char* str)
{
int len = strlen(str);
char* s = (char*)malloc(len * sizeof(char));
int top = 0;
char tmp;
while (*str != '\0')
{
if (*str == '(' || *str == '[' || *str == '{')
{
s[top++] = *str;
}
else//右括号
{
if (top == 0)//空栈
return false;
tmp = s[--top];
if (tmp == '(' && *str != ')' || tmp == '[' && *str != ']' || tmp == '{' && *str != '}')
return false;
}
str++;
}
free(s);
return top==0;
}
int main()
{
char arr[] = "{[()]}";
if (IsMarch(arr))
{
printf("yes!");
}
else
printf("no!");
printf("\n");
char brr[] = "{[(";
if (IsMarch(brr))
{
printf("yes!");
}
else
printf("no!");
}