LeetCode 20 有效的括号 c语言
2019-04-01 20:34
316 查看
要处理的表达式可以包含三种不同类型的括号:(),{} , []
eg.
(((((()))))) – VALID
()()()() – VALID
(((((((() – INVALID
((()(()))) – VALID
算法:
1.初始化栈 S。
2.一次处理表达式的每个括号。
3.如果遇到开括号,我们只需将其推到栈上即可。这意味着我们将稍后处理它,让我们简单地转到前面的子表达式。
4.如果我们遇到一个闭括号,那么我们检查栈顶的元素。如果栈顶的元素是一个相同类型的左括号,那么我们将它从栈中弹出并继续处理。否则,这意味着表达式无效。
5.如果到最后我们剩下的栈中仍然有元素,那么这意味着表达式无效。
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]; //top = top + 1 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; }
相关文章推荐
- leetcode 20 有效的括号
- Leetcode.20.有效的括号
- 【刷算法】LeetCode.20-有效的括号
- LeetCode-20-Valid Parentheses(有效的括号)
- LeetCode题解(python)-20. 有效的括号
- LeetCode 20 Valid Parentheses(有效的括号)
- LeetCode 20. Valid Parentheses--验证括号是否有效
- LeetCode - 20. 有效的括号
- Leetcode刷题记——20. Valid Parentheses (有效的括号即括号匹配)
- Leetcode(20)有效的括号
- Leetcode20. 有效的括号
- leetcode20 Valid Parentheses(有效的括号)
- LeetCode 20.有效的括号
- leetcode---20有效的括号
- 【LeetCode】[20] 有效的括号
- LeetCode 20. 有效的括号
- leetcode_20.有效对括号(有问题)
- Leetcode:20 有效的括号
- Leetcode20 python有效的括号
- LeetCode-20 有效的括号