栈应用_有效的括号

题目:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。

这一题是借助栈先进后出的特性

public boolean isValid(String s) {
	// 奇数肯定false;
	if(s.length()%2 == 1) return false;
	if(s.isEmpty()) return true;
	
	char[] string = s.toCharArray();
	Stack<Character> stack = new Stack<>();
	for(int i=0;i<s.length();i++){
		
		if(string[i] == '('){
			stack.push());
		}else if(string[i] == '['){
			stack.push(]);
		}else if(string[i] == '{'){
			stack.push(});
		}
		// 当出现右括号时,那么肯定会和栈顶的成一对才能为true,继续进行
		// 字符串还没有结束栈退为空,说明肯定不符合
		else if( stack.isEmpty() || string[i]!=stack.pop()){
			return false;
		}
	}
	if(stack.isEmpty()){
		return true;
	}
	return false;
}

你可能感兴趣的:(算法学习)