当前位置:网站首页>leetcode-括号有效性问题
leetcode-括号有效性问题
2022-07-28 14:31:00 【pshdhx_albert】
题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
输入:s = "()" 输出:true
输入:s = "()[]{}"
输出:true输入:s = "(]" 输出:false
输入:s = "([)]" 输出:false
输入:s = "{[]}"
输出:true思路描述
有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个【左括号放入栈顶】。
当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。
如果不是相同的类型,或者栈中并没有左括号,那么字符串 ss无效
注意:(( 和 )) 的特殊情况。
代码
package com.pshdhx.Algorithm.easy;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/**
* @author pshdhx
* @date 2022-01-12 15:26
* @Des 有效的括号
*/
/**
* 思路描述:有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个【左括号放入栈顶】。
* 当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。
* 如果不是相同的类型,或者栈中并没有左括号,那么字符串 ss无效
* 注意:(( 和 )) 的特殊情况。
*/
public class Brackets {
Boolean isValid(String s) {
//奇数直接返回
if(s.length() % 2 == 1){
return false;
}
//左括号入栈
//有括号入队列 "{[]}"
Stack<Character> stack = new Stack<>();
if(s.charAt(0) == ')' || s.charAt(0) == ']' ||s.charAt(0) == '}'){
return false;
}
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('
||s.charAt(i)=='['
||s.charAt(i)=='{'){
stack.push(s.charAt(i));
}else if(stack.size()==0){ //解决 ()))
return false;
}else if(s.charAt(i)==')' && stack.size()>0){
Character left = stack.pop();
if(left != '('){
return false;
}
}else if(s.charAt(i)== ']' && stack.size()>0){
Character left = stack.pop();
if(left != '['){
return false;
}
}else if(s.charAt(i)== '}' && stack.size()>0){
Character left = stack.pop();
if(left != '{'){
return false;
}
}
}
//解决 ((这种
if(stack.size()>0){
return false;
}
return true;
}
public static void main(String[] args) {
Brackets b = new Brackets();
Boolean valid = b.isValid("()))");
System.out.println(valid);
}
}
边栏推荐
- subst命令将一个文件夹镜像成本地的一个磁盘
- 2022-07-28日报:Science:AI设计蛋白质再获突破,可设计特定功能性蛋白质
- Crmeb Standard Version window+phpstudy8 installation tutorial (I)
- Apple iPhone app icon hidden how to retrieve and restore the hidden app icon displayed on the iPhone iPhone desktop to the iPhone iPhone iPhone desktop?
- Crmeb Standard Edition window+phpstudy8 installation tutorial (III)
- DJ-131/60C电压继电器
- Template injection summary
- Principle and configuration of MPLS LDP
- crmeb v4.3部署流程
- About the reptile thing
猜你喜欢
随机推荐
堆操作
Pytorch - autograd automatic differentiation
[MP error] MP: 'getbasemappe serviceimpl' claims
Here comes the full open source free customer service system
.net core 2.2 版本跨域配置
PMP每日一练 | 考试不迷路-7.28(包含敏捷+多选)
Collation of MySQL error prone knowledge points (to be updated)
Share the HR experience of the first and second tier companies
Dj-131/60c voltage relay
Have you ever used the single merchant mall, which is smooth enough to make people feel numb?
2、开源GPS项目HD-GR GNSS的自叙
No files or folders found to process
22、电文处理任务实现
百度提出动态自蒸馏方法,结合交互模型与双塔模型实现稠密段落检索
Opencv - draw mask images of multiple instances
Pycharm - output exception of program run and default comment of added function
1、开源GPS项目HD-GR GNSS的著作者
配置cx-oracle 解决(cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library: “Th
【通道注意力机制】SENet
Celery related









