括号合法问题
括号()的组合千奇百怪,Drizzle 想知道各种组合的括号可以是否合法合法要求:每个同类型的左括号必须有与之对应的同类的右括号以正确的顺序闭合
要求:
输入:输入一个括号字符串
输出:输出是否合法,是则True,否则False
示例:
输入:
(){}[]
输出:
True
范围:
对于 100% 的数据:括号字符串长度 ≤ 100
这题用C++怎么做 #include <stdio.h>
char d[] = {'{' , '}' ,'[' , ']' , '(' , ')'} ;
bool check(char s[])
{
char e ;
bool r ;
int i , j , k ;
for(i = k = 0 , r = true ; s && r ; i ++) {
for(j = 0 ; j < 6 ; j ++) if(s == d) break ;
if(j < 6) {
if(! (j % 2)) {
e = j + 1 ;
} else {
if(k && s == d]) {
e = 0 ;
k -- ;
} else {
r = false ;
}
}
}
}
if(r) r = (k == 0) ? true : false ;
return r ;
}
int main(void)
{
char s ;
int i , n ;
for(n = 0 ; (s = getchar()) != '\n' ;) {
for(i = 0 ; i < 6 ; i ++) if(s == d) break ;
if(i < 6) n ++ ;
}
s = 0 ;
if(check(s)) printf("True !\n") ;
else printf("False !\n") ;
}
编译、运行实况:
D:\\C>g++ -static -o x x.cpp
D:\\C>x
{{[[[()()]]]}}
True !
页:
[1]