括号合法题
一、括号合法题
2116. 判断一个括号字符串是否有效
//采用从左往右和从右往左遍历的贪心算法,分别保证前缀合法,后缀合法。
public boolean canBeValid(String s, String locked) {
int n=s.length();
if (n%2==1) return false;
int num=0;
// 从左到右扫描,假设所有未锁定位置都能变为 '('
for (int i = 0; i < n; i++) {
if (locked.charAt(i)=='0'||s.charAt(i)=='('){
num++;
}else {
num--;
}
if (num<0){
return false;
}
}
num=0;
// 从右到左扫描,假设所有未锁定位置都能变为 ')'
for (int i = n-1; i >=0 ; i--) {
if (locked.charAt(i)=='0'||s.charAt(i)==')'){
num++;
}else {
num--;
}
if (num<0){
return false;
}
}
return true;
}
20. 有效的括号 - 力扣(LeetCode)
public static boolean isValid(String s) {
int n=s.length();
if (n%2==1) return false;
Map<String,String> map=new HashMap<>();
map.put("(",")");
map.put("{","}");
map.put("[","]");
LinkedList<String> list=new LinkedList<>();
for (int i = 0; i < n; i++) {
if ("(".equals(s.charAt(i)+"")||
"{".equals(s.charAt(i)+"")||
"[".equals(s.charAt(i)+"")){
list.add(s.charAt(i)+"");
}else{
String poll = list.pollLast();
if (poll==null||!map.get(poll).equals(s.charAt(i)+"")){
return false;
}
}
}
if (list.size()!=0){
return false;
}
return true;
}
Java如何判断质数
再小的努力,乘以365都很明显!
每天⽤⼼记录⼀点点。内容也许不重要,但习惯很重要!
一个程序员最重要的能力是:写出高质量的代码!!
有道无术,术尚可求也,有术无道,止于术。
无论你是年轻还是年长,所有程序员都需要记住:时刻努力学习新技术,否则就会被时代抛弃!