Java括号匹配举例详解
一、题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例:
输入:s = "()"
输出:true
输入:s = "(]"
输出:false
二、题解
思路分析:
我们可以使用栈来解决这个问题:
遍历字符串,如果是左括号,就将其入栈;
如果是右括号,就将栈顶元素弹出,判断是否是与其匹配的左括号,
若栈中无元素可以弹出,则无能与该右括号匹配的左括号,返回false,
若不是与其匹配的左括号,返回false,
若是与其匹配的左括号,则继续遍历下一个字符。
当循环结束时,判断栈是否为空,
若栈不为空,则表明还有未匹配的左括号,返回false,
若栈为空,则表示所有的左括号都与相同类型的右括号匹配,返回true

代码实现:
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
//判断是否是左括号
char ch = s.charAt(i);
if(ch == '(' || ch == '[' || ch == '{'){
stack.push(ch);
}else {
//右括号,出栈
//无左括号能够匹配,返回false
if(stack.empty()){
return false;
}
char ch2 = stack.pop();
if((ch2 == '(' && ch == ')') || (ch2 == '[' && ch == ']') || (ch2 == '{' && ch == '}')){
}else {
return false;
}
}
}
return stack.empty();
}
}题目来自:
总结
到此这篇关于Java括号匹配的文章就介绍到这了,更多相关Java括号匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解spring boot 使用application.properties 进行外部配置
这篇文章主要介绍了详解spring boot 使用application.properties 进行外部配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03
Java中比较器Comparable和Comparator超详细解析
Java中在进行数据排序时,Comparable和Comparator必不可少会遇得到,这篇文章主要给大家介绍了关于Java中比较器Comparable和Comparator的相关资料,需要的朋友可以参考下2025-06-06
SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解
这篇文章主要介绍了SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08


最新评论