給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。spa
有效字符串需知足:code
左括號必須用相同類型的右括號閉合。
左括號必須以正確的順序閉合。
注意空字符串可被認爲是有效字符串。blog
示例 1:字符串
輸入: "()"
輸出: true
示例 2:class
輸入: "()[]{}"
輸出: true
示例 3:top
輸入: "(]"
輸出: false
示例 4:di
輸入: "([)]"
輸出: false
示例 5:co
輸入: "{[]}"
輸出: true字符
bool isValid(char* s) { if( s == NULL ) return false; char *stack = (char *) malloc( sizeof(char) * ( strlen(s)+1 ) ); int top = 0; for( int i=0; s[i]!='\0'; i++) { if(s[i]=='(' || s[i]=='[' || s[i]=='{') //左括號入棧 stack[++top] = s[i]; else if( (s[i]==')'&&stack[top]=='(') || (s[i]==']'&&stack[top]=='[') || (s[i]=='}'&&stack[top]=='{') ) //右括號比對 top--; else //比對失敗 return false; } if( stack!= NULL) { free(stack); stack = NULL; } if( top == 0 ) //字符串結束且棧空 return true; return false; }