算法:有效的括号

有效的括号

题目描述

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

有效字符串需满足:

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

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

每个右括号都有一个对应的相同类型的左括号。

题目示例

java 复制代码
示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

示例 5:

输入:s = "([)]"

输出:false

算法实现

看了下别人的算法很巧妙,用replace("()","")循环替换,直到字符串长度是0则满足要求。

我用了Stack数据结构完成题解,思路很简单就是当遇到左括号的时候就入栈,当遇到右括号的时候将当前栈顶的元素与右括号对比,如果比对失败说明不符合要求。整体代码如下:

java 复制代码
public boolean isValid(String s) {

		if (s == null || s.isEmpty()) {
			return false;
		}
		int length = s.length();
		if (length % 2 != 0) {// 奇数直接返回false
			return false;
		}
		char[] chars = s.toCharArray();
		Stack stack = new Stack();
		for(int i=0;i<length;i++) {
			char c = chars[i];
			if(c=='('||c=='['||c=='{') {
				stack.add(c);
			}else {//处理 )]}
				if(stack.isEmpty()) {
					return false;
				}
				char left = (char) stack.pop();
				boolean isValid = (c==')'&&left=='(')
						||(c==']'&&left=='[')||
						(c=='}'&&left=='{');
				if(!isValid) {
					return false;
				}
			}
		}//end for
	
		return stack.isEmpty();
	}
相关推荐
前端精髓2 小时前
langchain 短期记忆(状态)动态运行时上下文
python·langchain
AiNightVision2 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
最强小杰3 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
牧羊人.3333 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
DeepVisionary3 小时前
为拿并网许可,OpenAI在佐治亚新园区同意高峰期断电三成
python·自动化
小郎君6584 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
VIP_CQCRE4 小时前
内容自动化越跑越乱?先补上状态、去重和失败恢复
python·ai·工作流·幂等设计·内容自动化
JJJennie7774 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
東隅已逝,桑榆非晚4 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法