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