Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
用户输入一串字符,判断括号是否匹配
#include<stdio.h>
#include<string.h>
int isValid(char* s){
char* p1 = s; //用一个指针跑源数组
char ch[30]; //用一个新字符数组作栈保存括号和判断对应关系
int i = -1;
int flag = 0;
for(; *p1!='\0'; p1++){
if((*p1 == '(') || (*p1 == '[') || (*p1 == '{')){
i++;
ch[i] = *p1;
}else if(*p1 == ')'){
if(ch[i] == '('){
i--;
}
}else if(*p1 == ']'){
if(ch[i] == '['){
i--;
}
}else if(*p1 == '}'){
if(ch[i] == '{'){
i--;
}
}
}
if(i == -1){
flag = 1;
}
return flag;
}
int main(void){
char s[30];
int result;
printf("input a string: ");
fgets(s,sizeof(s),stdin);
printf("old string: %s",s);
result = isValid(s);
if(result == 0){
printf("not valid!\n");
}else{
printf("valid!\n");
}
}