[leetcode] Valid Parentheses

Given a string containing just the characters'(',')','{','}','['and']', determine if the input string is valid.

The brackets must close in the correct order,"()"and"()[]{}"are all valid but"(]"and"([)]"are not.

https://oj.leetcode.com/problems/valid-parentheses/

思路1:经典的栈匹配。一个栈,左符号入栈,右符号出栈。最后检查栈是否为空。

public class Solution {
	public boolean isValid(String s) {
		if (s == null || s.length() == 0)
			return true;
		Stack<Character> stack = new Stack<Character>();
		int n = s.length();
		for (int i = 0; i < n; i++) {
			char ch = s.charAt(i);
			if (ch == '(' || ch == '{' || ch == '[')
				stack.push(ch);
			else {
				if (stack.isEmpty())
					return false;
				char out = stack.pop();
				if (ch == ')' && out != '(' || ch == '}' && out != '{'
						|| ch == ']' && out != '[')
					return false;
			}

		}
		if (!stack.isEmpty())
			return false;
		return true;
	}

	public static void main(String[] args) {
		// true
		System.out.println(new Solution().isValid("()"));

		// true
		System.out.println(new Solution().isValid("()[]{}"));

		// false
		System.out.println(new Solution().isValid("(]"));

		// false
		System.out.println(new Solution().isValid("([)]"));

	}

}

 

第二遍记录:

  算法不变,注意栈空判断。 

 

 

posted @ 2014-06-26 19:24  jdflyfly  阅读(125)  评论(0编辑  收藏  举报