目录 一、题目描述 二、题解 一、题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右
目录
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
示例:
输入:s = "()"
输出:true
输入:s = "(]"
输出:false
思路分析:
我们可以使用栈来解决这个问题:
遍历字符串,如果是左括号,就将其入栈;
如果是右括号,就将栈顶元素弹出,判断是否是与其匹配的左括号,
若栈中无元素可以弹出,则无能与该右括号匹配的左括号,返回false,
若不是与其匹配的左括号,返回false,
若是与其匹配的左括号,则继续遍历下一个字符。
当循环结束时,判断栈是否为空,
若栈不为空,则表明还有未匹配的左括号,返回false,
若栈为空,则表示所有的左括号都与相同类型的右括号匹配,返回true
代码实现:
class Solution { public boolean isValid(String s) { Stack 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(); }}
题目来自:
来源地址:https://blog.csdn.net/2301_76161469/article/details/133363547
--结束END--
本文标题: Java括号匹配
本文链接: https://lsjlt.com/news/423038.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0