1. 括号(0809)

设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。

说明:解集不能包含重复的子集。

例如,给出 n = 3,生成结果为:

[

"((()))",

"(()())",

"(())()",

"()(())",

"()()()"

]

class Solution {
List<String> list = new ArrayList<>();
char[] arr = new char[]{'(',')'};
public List<String> generateParenthesis(int n) {
StringBuilder sb = new StringBuilder();
backtrack(sb,n,0,0);
return list;
}
//countl表示左括号的数量,countr表示右括号的数量
public void backtrack(StringBuilder sb,int n,int countl,int countr){
if(countl < countr || countl > n){
return;
}
if(sb.length() == 2*n){
list.add(sb.toString());
}
for(char c : arr){
sb.append(c);
if(c == '('){
countl++;
backtrack(sb,n,countl,countr);
sb.deleteCharAt(sb.length()-1);
countl--;
}else{
countr++;
backtrack(sb,n,countl,countr);
sb.deleteCharAt(sb.length()-1);
countr--;
} } }
}

2. 有效的括号(20)

class Solution {
public boolean isValid(String s) {
int len = s.length();
if(len % 2 == 1) return false;
char[] arr = s.toCharArray();
Stack<Character> sin = new Stack<>();
Stack<Character> sou = new Stack<>();
for(char c : arr){
sin.push(c);
}
while(!sin.isEmpty()){
char tmp = sin.pop();
if(tmp == ']' || tmp == '}' ||tmp == ')')
sou.push(tmp);
else{
if(sou.isEmpty()) return false;
boolean b = isValidhelper(tmp,sou.pop());
if(!b) return false;
}
}
return true;
}
public boolean isValidhelper(char c1,char c2){
if(c1 == '(' && c2 == ')') return true;
if(c1 == '[' && c2 == ']') return true;
if(c1 == '{' && c2 == '}') return true;
return false;
}
}

3. 有效的括号(20)

最新文章

  1. OpenCascade Draw Test Harness
  2. for循环相关
  3. [Spring MVC] - InitBinder验证
  4. 使用内网的Docker Image启动AcmeAir应用
  5. 一个简单的Socket通信Demo
  6. 给定表达式[x/2] + y + x * y, 其中x,y都是正整数。
  7. Data Types in the Kernel &amp;lt;LDD3 学习笔记&amp;gt;
  8. Android中解析网络请求的URL
  9. 【转】FLEX中SharedObject介绍及应用
  10. ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(二)—启用用户管理
  11. Testlink1.9.17使用方法(第二章 登录&amp;汉化设置)
  12. 配置maven项目的开发时的默认jdk版本
  13. Btrace介绍
  14. Spring Cloud 研发框架demo
  15. HDU3966-Aragorn&#39;s Story-树链剖分-点权
  16. C# Selenium学习
  17. 报错: unable to register MBean
  18. 2017-2018 第一学期201623班《程序设计与数据结构》-第7&amp;8周作业问题总结
  19. [线索二叉树] [LeetCode] 不需要栈或者别的辅助空间,完成二叉树的中序遍历。题:Recover Binary Search Tree,Binary Tree Inorder Traversal
  20. POJ 3974 Palindrome 字符串 Manacher算法

热门文章

  1. winform制作简易屏幕保护工具
  2. U 跳转中加入变量参数的写法
  3. 5G时代,视频会议的未来
  4. JUC学习笔记(二)
  5. C++面向对象 1(类-封装)
  6. 面试必备:Android Activity启动流程源码分析
  7. awk-02-内置变量
  8. 安鸾CTF Writeup wordpress 01
  9. Pikachu-XSS模块与3个案例演示
  10. 安装 iperf和服务器之间测速