java括号匹配问题介绍

网友投稿 420 2022-09-05


java括号匹配问题介绍

目录题目描述:问题分析:1 可能存在左括号多的情况2 可能存在右括号多的情况3 存在括号不匹配的情况总结解题思路:代码实现:

题目描述:

给定一个只包括 ‘(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合

题目链接:括号匹配问题

问题分析:

1 可能存在左括号多的情况

2 可能存在右括号多的情况

3 存在括号不匹配的情况

总结解题思路:

1 我们在遍历字符串的过程TGmLbq中,需要先取得栈顶的元素与右括号比较,看是否匹配,如果匹配才能出栈。

2 在出栈的过程中,如果栈为空,说明右括号多了,如果发现栈顶元素与右括号不是匹配的括号,那么就需要直接return了

3 在整个字符串遍历结束之后,我们要判断一下栈是否为空,如果为空,说明是匹配的,否则就是左括号偏多的情况。

代码实现:

public boolean isValid(String s) {

Stack stack = new Stack<>();

for(int i = 0;i

char ch = s.charAt(i);

if(ch=='('||ch=='['||ch=='{'){

stack.push(ch);//左括号进栈

}else{

if(stack.empty()){//栈为空,右括号多了

return false;

}else{

char ch1 = stack.peek();//取栈顶元素

if(ch1=='('&& ch ==')'||ch1=='{'&&ch=='}'||ch1=='['&&ch==']'){

stack.pop();//匹配出栈

}else{

return false;//括号不匹配

}

}

}

}

if(!staTGmLbqck.empty()){

return false;//栈不为空,左括号偏多了

}

return true;

}

char ch = s.charAt(i);

if(ch=='('||ch=='['||ch=='{'){

stack.push(ch);//左括号进栈

}else{

if(stack.empty()){//栈为空,右括号多了

return false;

}else{

char ch1 = stack.peek();//取栈顶元素

if(ch1=='('&& ch ==')'||ch1=='{'&&ch=='}'||ch1=='['&&ch==']'){

stack.pop();//匹配出栈

}else{

return false;//括号不匹配

}

}

}

}

if(!staTGmLbqck.empty()){

return false;//栈不为空,左括号偏多了

}

return true;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python学习笔记|选择与循环练习题(python循环基础题)
下一篇:Python 交换机健康性检查(python入门教程(非常详细))
相关文章

 发表评论

暂时没有评论,来抢沙发吧~