LeetCode解题报告--Generate Parentheses
2015-09-25 13:56
555 查看
**题目:**Generate Parentheses
Given n pairs of parentheses, write a function to generate all
combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
“((()))”, “(()())”, “(())()”, “()(())”, “()()()”
分析:题意要求输入正整数n通过算法产生所有可能的左右括号的匹配可能性。
1)涉及n的多可能性的题目,首先得相到的是通过递归解决(recursive),首先找到递归基或跳出递归条件。改题有三种跳出递归条件,1>左右括号数目等于n且相互匹配,该情况也是递归成功返回结果的条件,2>右括号数目大于左括号数目,直接跳出当前递归,3>左括号数目等于n而右括号数目小于n,则直接添加右括号,直到右括号数目等于n。
2)从左右括号数目为0开始递归,直到出现1)中的1>情况,递归结束,得到结果。
Java Accepted 代码
相关代码放在个人github:https://github.com/gannyee/LeetCode/
Given n pairs of parentheses, write a function to generate all
combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
“((()))”, “(()())”, “(())()”, “()(())”, “()()()”
分析:题意要求输入正整数n通过算法产生所有可能的左右括号的匹配可能性。
1)涉及n的多可能性的题目,首先得相到的是通过递归解决(recursive),首先找到递归基或跳出递归条件。改题有三种跳出递归条件,1>左右括号数目等于n且相互匹配,该情况也是递归成功返回结果的条件,2>右括号数目大于左括号数目,直接跳出当前递归,3>左括号数目等于n而右括号数目小于n,则直接添加右括号,直到右括号数目等于n。
2)从左右括号数目为0开始递归,直到出现1)中的1>情况,递归结束,得到结果。
Java Accepted 代码
public class Solution { public boolean isValid(String s) { if (s.length() % 2 != 0) { return false; } Stack<Character> string = new Stack<Character>(); char ch; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '[' || s.charAt(i) == '(' || s.charAt(i) == '{') { string.push(s.charAt(i)); //System.out.println(string); } else { if (string.isEmpty()){ return false; } else { ch = s.charAt(i); switch (ch) { case ']': if (string.pop() != '[') return false; break; case ')': if (string.pop() != '(') return false; break; case '}': if (string.pop() != '{') return false; break; } } } } if(string.isEmpty()){ return true; }else{ return false; } } }
相关代码放在个人github:https://github.com/gannyee/LeetCode/
相关文章推荐
- 一个关于if else容易迷惑的问题
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树