当前位置: 首页> 科技> 能源 > 后端开发刷题 | 有效括号序列【栈】

后端开发刷题 | 有效括号序列【栈】

时间:2025/8/15 10:44:30来源:https://blog.csdn.net/jingling555/article/details/141297194 浏览次数:2次

描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

数据范围:字符串长度0≤n≤10000

要求:空间复杂度 O(n),时间复杂度 O(n)

示例1

输入:

"["

返回值:

false

复制

示例2

输入:

"[]"

返回值:

true

思路分析:

这里可以使用栈,根据栈的先进后出,后进先出的特点,来存储半边的括号,当出现左括号,向栈中压入右括号,然后比较栈中压入的右括号与字符串中当前的括号相比,来判断括号是否成双成对。

代码:

import java.util.*;public class Solution {/*** * @param s string字符串 * @return bool布尔型*/public boolean isValid (String s) {// write code hereStack<Character> stack=new Stack<Character>();//将字符串转换为字符数组char[] c=s.toCharArray();for(int i=0;i<c.length;i++){if(c[i]=='('){stack.push(')');}else if(c[i]=='['){stack.push(']');}else if(c[i]=='{'){stack.push('}');}else if(stack.isEmpty()||stack.pop()!=c[i]){//如果栈为空或者栈压出的元素不是该符号,则说明不是成双成对的括号//这里一个小技巧就是,只要stack.isEmpty()为false,那么一定会去判断stack.pop()!=c[i],就会执行栈压出的操作return false;}}//最后判断压入栈中的元素是否全部比较完成,是则返回true,还有剩余则说明有括号没有配对return stack.isEmpty();}
}

关键字:后端开发刷题 | 有效括号序列【栈】

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: