算法作业HW14:Leetcode20 Valid Parentheses
来源:互联网 发布:java split函数 参数 编辑:程序博客网 时间:2024/05/15 09:11
Description:
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
Note:
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
Solution:
Analysis and Thinking:
题目要去对于输入的字符串,其中包含‘{‘ ’}’、‘(‘ ’)’等闭合字符,判断字符串是否合法。合法的标准当然是要以正确的顺序闭合。这是一个明显的栈应用问题,利用stack就可以解决,例如遇到左闭合符号入栈,如果遇到了一个右闭合符号,弹出一个左闭合符号,看是否匹配,因为闭合符号遵循最近匹配原则,因此扫描一遍字符串,就可以得出结果。
Steps:
1.遍历字符串中每一个字符
2.若当前字符与栈顶匹配,则出栈
3.否则,将当前遍历元素入栈
Codes:
class Solution { public: bool isValid(string s) { if(s.length() == 0) //空字符串,合法 { return true; } stack<char> record; //用于记录字符串的栈 record.push(s[0]); for(int i = 2; i < s.length(); i++) { if(!record.empty() && isValid_helper(record.top(), s[i])) //判断是否有闭合符号匹配,若有,则出栈,否则将字符入栈 { record.pop(); } else { record.push(s[i]); } } if(record.empty()) //判断的标准就是,是否所有的闭合符号都被匹配 { return true; } else { return false; } } bool isValid_helper(char a, char b) //用于辅助判断闭合符号是否匹配 { switch(a) { case '(': if (b==')') return true; break; case '{': if (b=='}') return true; break; case '[': if (b==']') return true; break; default: return false; } } };
Results:
阅读全文
0 0
- 算法作业HW14:Leetcode20 Valid Parentheses
- LeetCode20: Valid Parentheses
- [LeetCode20]Valid Parentheses
- leetcode20-Valid Parentheses
- LeetCode20:Valid Parentheses
- LeetCode20:Valid Parentheses
- leetcode20. Valid Parentheses
- LeetCode20 Valid Parentheses
- LeetCode20. Valid Parentheses
- Leetcode20: Valid Parentheses
- Leetcode20. Valid Parentheses
- leetcode20:Valid Parentheses
- LeetCode20. Valid Parentheses
- leetcode20. Valid Parentheses
- LeetCode20. Valid Parentheses
- 【LeetCode20】【Valid Parentheses】
- Leetcode20. Valid Parentheses
- leetcode20. Valid Parentheses
- chkconfig命令 启动或停止 系统服务
- rabbitmq配置镜像模式
- 48. Rotate Image(第十三周)
- 算法作业17
- Java编程思想-21并发
- 算法作业HW14:Leetcode20 Valid Parentheses
- Java编程思想-22图形化用户界面
- ARM-MMU详解
- rabbitmq+haproxy+keepalive实现负载均衡(高可用)
- ActiveMQ(三):ActiveMQ的安全机制、api及订阅模式demo
- 日常踩坑
- Java编程思想-写在后面的话
- 英语语法
- hihoCoder 1176 : 欧拉路·一(并查集)