LeetCode每日一题 001 有效的括号
2019-02-27 21:51
169 查看
1、解题思路
从前往后,依次看每个括号字符能否找到匹配的另一半(规则是就近配对),只要某一个括号字符找到了另一半就将这一对括号从字符串序列里移除,剩下的字符串序列再做配对。
这种方式下,只要尚未配对的括号字符都要进行记录,以参与后续的配对。未配对记录(入栈),配对移除(出栈)这个过程和栈的入栈出栈操作是一致的了,因此可以用栈来解决。
2、有效题解
[code]bool isMatchedChars(char left, char right) { return (left == '(' && right == ')') || (left == '{' && right == '}') || (left == '[' && right == ']'); } bool isValid(char* s) { if (NULL == s) { return false; } if (*s == '\0') { return true; } char stack[10000] = {0}; int count = 1; stack[0] = *s; char *p = s; while (*p != '\0' && *(p + 1) != '\0') { if (count == 0 || !isMatchedChars(stack[count-1], *(p+1))) { stack[count] = *(p+1); count++; } else { stack[count-1] = 0; count--; } p++; } return count == 0; }
3、小结
配对问题借助栈解决有很好的效果
相关文章推荐
- 每日一恋 - LeetCode 20.有效的括号 & 150. 逆波兰表达式求值
- (LeetCode每日一刷06)有效的括号
- LeetCode----32. Longest Valid Parentheses(最长有效括号)
- leetcode上做的一道判断括号字符串是否有效的问题
- leetcode--22--产生有效括号
- 8.5-有效的括号组合(same in LeetCode)
- LeetCode 32. 最长有效括号
- 【LeetCode】20 Valid Parentheses 有效括号
- 每日一题 LeetCode 有效的数字 Python实现
- leetcode 32. Longest Valid Parentheses 最长有效括号长度
- LeetCode 20. 有效的括号(java)
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
- LeetCode 20 Valid Parentheses(有效的括号)
- leetcode-java-20-有效的括号(valid parentheses)-java
- LeetCode 20. 有效的括号
- Leetcode:Generate Parentheses 生成有效括号对
- leetcode 32. 最长有效括号
- leetcode20 有效的括号
- leetcode-day01 有效的括号
- LeetCode刷题记录4-有效的括号