20.有效的括号

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

有效字符串需满足:

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

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

解题思路(自):利用栈,但是重点在怎么辨别是同一对括号。

我利用括号的ASCII码(28 )29 {123}125 [91]93之间的差小于等于2,进行判断。

public boolean isValid(String s){
		Stack<Character> stack1 = new Stack<>();
		Stack<Character> stack2 = new Stack();
		//for循环将数值转入栈中
		for (int i = 0; i < s.length(); i++) {
			stack1.push(s.charAt(i));
		}
		
		while (!stack1.empty()) {
			if(stack2.empty()){
				stack2.push(stack1.peek());
				stack1.pop();
				continue;
			}
			char c = stack1.peek();
			int index = stack2.peek()-c;
			if (index>0 &&index<=2) {
				stack1.pop();
				stack2.pop();
				
			}else{
				stack1.pop();
				stack2.push(c);
			}
		}
		if (stack2.empty()) {
			return true;
		}
		
		return false;
	}

上一篇:java剑指offer30:包含min函数的栈


下一篇:9款赏心悦目的HTML5/CSS3应用特效(免积分下载咯)