C语言:算法题判断是否有效字符({[]})---括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
输入:s = "{[]}"
输出:true
输入:s = "()[]{}"
输出:true
[{}]
[[{}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void isValid(char * s);
int main()
{
/*********************************
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
输入:s = "{[]}"
输出:true
输入:s = "()[]{}"
输出:true
[{}]
[[{}
差二
{ = 123;
} = 125;
[ = 91;
] = 93;
差一
( = 40;
) = 41;
*********************************/
int i,j;
char np[6];
char *s;
int num;
s = np;
gets(np);
isValid(np);
return 0;
}
void isValid(char *s)
{
int i,j;
char con[6];
int num;
num = strlen(s);
int index = 0;
if(num % 2 == 1)
{
printf("false");
return;
}
else
{
for(i = 0; i < num; i++)
{
if(s[i] == '(' || s[i] == '{' || s[i] == '[')
{
con[index++] = s[i];
}
else
{
if(s[i] == '(' && con[index] != ')')
{
printf("false");
return;
}
if(s[i] == '{' && con[index] != '}')
{
printf("false");
return;
}
if(s[i] == '[' && con[index] != ']')
{
printf("false");
return;
}
index--;
}
}
}
if(index == 0)
{
printf("ture");
return;
}
}
本文来自博客园,作者:竹等寒,转载请注明原文链接。