20. 有效的括号
题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "(]"
输出: false
代码:
class Solution {
public boolean isValid(String s) {
String str="(){}[]";
int len=s.length();
if(len==0||s==null){return true;} //空和长度为0 成立
if(len%2==1){return false;} //长度为单数必不可能
int[] stack=new int[(len/2)+1];
int i=0,j=0;
while(i<len&&j>=0){
if(s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='['){ //左符号入栈
stack[j++]=s.charAt(i++);
}
else{ //当前为右符号,如果栈为空则不匹配,栈不为空,查看最顶端符号与当前符号是否匹配
if(j==0){return false;} //栈为空,必失败
if((s.charAt(i)==')'&&stack[j-1]=='(')||(s.charAt(i)==']'&&stack[j-1]=='[')||(s.charAt(i)=='}'&&stack[j-1]=='{')){
j--;
i++; //匹配成功
}
else{
return false; //匹配失败
}
}
}
if(j>0){return false;} //退出循环如果栈不为空,匹配失败
return true;
}
}
uploading-image-306101.png
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术