20. Valid Parentheses
判断括号是否匹配
知道要用栈来做,但是过程还是想了一会儿,哎
1 bool isValid(char* s) { 2 int len = 0; 3 while(s[len++] != '\0'); 4 char* stack = (char *) malloc(sizeof(char) * (len + 1)); 5 int size = 0; 6 7 int i = 0; 8 while(s[i] != '\0') { 9 int flag = 0; 10 switch(s[i]) { 11 case '{': case '}': case '[': case ']': case '(': case ')': 12 flag = 1; 13 break; 14 default: 15 flag = 0; 16 break; 17 } 18 if(flag) { 19 if(size == 0) 20 if(s[i] == '}' || s[i] == ']' || s[i] == ')') 21 return false; 22 else { 23 stack[size] = s[i]; 24 size++; 25 } 26 else { 27 if((stack[size-1] == '{' && '}' == s[i]) || 28 (stack[size-1] == '[' && ']' == s[i]) || 29 (stack[size-1] == '(' && ')' == s[i])) 30 size--; 31 else { 32 stack[size] = s[i]; 33 size++; 34 } 35 } 36 } 37 i++; 38 } 39 free(stack); 40 return size == 0 ? true : false; 41 }