当前位置:网站首页>leetcode007--判断字符串中的括号是否匹配
leetcode007--判断字符串中的括号是否匹配
2022-04-23 04:38:00 【singularityDZF】
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/**
* 给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
* 有效字符串需满足:
*
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
*
* 示例 1:
* 输入:s = "()"
* 输出:true
* 示例2:
* 输入:s = "()[]{}"
* 输出:true
*
* 示例3:
* 输入:s = "(]"
* 输出:false
*
* 示例4:
* 输入:s = "([)]"
* 输出:false
*
* 示例5:
* 输入:s = "{[]}"
* 输出:true
*
* 提示:
* 1 <= s.length <= 104
* s 仅由括号 '()[]{}' 组成
*
*/
public class test07 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s = bf.readLine();
//System.out.println(s.length());
System.out.println(s+"是否有效:"+isValid(s));
}
// public static boolean isValid(String s){
// boolean flag = false;
// for( int i=(s.length()/2)-1; i >= 0; i--){
// int j = 1;
// if ( s.charAt(i) == '(' && s.charAt(i+j) == ')'){
// flag = true;
// j += 2;
// }else if (s.charAt(i) == '[' && s.charAt(i+j) == ']'){
// flag = true;
// j += 2;
// }else if (s.charAt(i) == '{' && s.charAt(i+j) == '}'){
// flag = true;
// j += 2;
// }else{
// flag = false;
// break;
// }
// }
// return flag;
// }
public static boolean isValid(String s){
int n = s.length();
if( n%2 ==1){
return false;
}
Map<Character,Character> map = new HashMap<Character,Character>();
map.put(')', '(');
map.put(']', '[');
map.put('}', '{');
//用栈先进后出的特点进行判断,当前符号只需要和栈顶元素进行匹配:匹配,栈顶元素出栈;反之,当前元素入栈
Deque<Character> stack = new LinkedList<Character>();
for( int i=0; i<n; i++){
char ch = s.charAt(i);
if(map.containsKey(ch)){
if(stack.isEmpty() || stack.peek() != map.get(ch)){ //判断栈是否为空或者栈顶元素与当前元素不匹配
return false;
}
stack.pop(); //栈顶元素出栈
}else{
stack.push(ch); //栈内没有当前元素,当前元素入栈(说白了就是'(','['和'{'这三种符号进栈)
}
}
return stack.isEmpty();
}
}
版权声明
本文为[singularityDZF]所创,转载请带上原文链接,感谢
https://blog.csdn.net/dangzefei/article/details/124357037
边栏推荐
- [AI vision · quick review of NLP natural language processing papers today, issue 31] Fri, 15 APR 2022
- Ali's ten-year technical experts jointly created the "latest" jetpack compose project combat drill (with demo)
- Introduction to Cortex-M3 register set, assembly language and C language interface
- 电钻、电锤、电镐的区别
- PHP export excel table
- 重剑无锋,大巧不工
- [AI vision · quick review of today's sound acoustic papers, issue 2] Fri, 15 APR 2022
- Microbial neuroimmune axis -- the hope of prevention and treatment of cardiovascular diseases
- zynq平台交叉编译器的安装
- AWS EKS添加集群用户或IAM角色
猜你喜欢

针对NFT的网络钓鱼

STM32单片机ADC规则组多通道转换-DMA模式

2021数学建模国赛一等奖经验总结与分享

【Echart】echart 入門

单极性非归零NRZ码、双极性非归零NRZ码、2ASK、2FSK、2PSK、2DPSK及MATLAB仿真

Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.1.15.

Supplement 14: cmake practice project notes (to be continued 4 / 22)

AWS EKS 部署要点以及控制台与eksctl创建的差异

Why recommend you to study embedded

Interaction of diet gut microbiota on cardiovascular disease
随机推荐
520. Detect capital letters
协程与多进程的完美结合
383. 赎金信
Eksctl deploying AWS eks
补:注解(Annotation)
Brushless motor drive scheme based on Infineon MCU GTM module
[echart] Introduction to echart
单片机串口数据处理(1)——串口中断发送数据
eksctl 部署AWS EKS
Go反射—Go语言圣经学习笔记
在AWS控制台创建VPC(无图版)
1个需求的一生,团队协作在云效钉钉小程序上可以这么玩
Mysql, binlog log query
mysql table 中增加列的SQL语句
IDE Idea 自动编译 与 On Upate Action 、 On Frame Deactivation 的配置
Inverse system of RC low pass filter
MySQL 2013 lost connection to MySQL server during query
针对NFT的网络钓鱼
STM32上μC/Shell移植与应用
【论文阅读】【3d目标检测】Improving 3D Object Detection with Channel-wise Transformer