Java判断字符串是否是有效的括号

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

有效字符串需要满足:

左括号必须用相同类型的右括号闭合。例如:"[]","()","{}"

左括号必须以正确的顺序闭合。例如:"[()]"

每个右括号都有一个对应的相同类型的左括号。例如:"[()]{}"

java 复制代码
package learnProject.csdn;

/**
 * 
 * @author Roc-xb
 *
 */
public class ValidParentheses {

	public static boolean isValid(String s) {
		if (s == null || s.length() == 0)
			return false;
		char[] stack = new char[s.length()];
		int head = 0;
		for (char c : s.toCharArray()) {
			switch (c) {
			case '{':
			case '[':
			case '(':
				stack[head++] = c;
				break;
			case '}':
				if (head == 0 || stack[--head] != '{') {
					return false;
				}
				break;
			case ')':
				if (head == 0 || stack[--head] != '(') {
					return false;
				}
				break;
			case ']':
				if (head == 0 || stack[--head] != '[') {
					return false;
				}
				break;
			}
		}
		return head == 0;
	}

	public static void main(String[] args) {
		System.out.println(isValid(null));

	}
}
相关推荐
岚天start31 分钟前
Linux内核coredump分析方案
linux·运维·服务器·gdb·coredump·堆栈·内存快照
不爱编程的小九九33 分钟前
小九源码-springboot097-java付费自习室管理系统
java·开发语言·spring boot
屁股割了还要学1 小时前
【Linux入门】常用工具:yum、vim
linux·运维·服务器·c语言·c++·学习·考研
云计算练习生1 小时前
linux shell编程实战 03 数组:批量处理数据
linux·运维·服务器·数组·shell编程
独自破碎E1 小时前
LeetCode 381: O(1) 时间插入、删除和获取随机元素 - 允许重复
java·算法·leetcode
程语有云1 小时前
生产事故-Caffeine缓存误用之临下班的救赎
java·缓存·caffeine·阻塞·log·生产事故
王道长服务器 | 亚马逊云1 小时前
AWS Elemental MediaConvert:视频转码不再难
linux·服务器·网络·云计算·音视频·aws
Miraitowa_cheems1 小时前
LeetCode算法日记 - Day 81: 最大子数组和
java·数据结构·算法·leetcode·决策树·职场和发展·深度优先
qq_479875431 小时前
TCP网络编程本质
服务器·网络·tcp/ip
CodeCraft Studio1 小时前
国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
java·c#·word·spire.doc·word文档转换·txt转word·word转txt