20. Valid Parentheses

 

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 }

 

20. Valid Parentheses