Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
- Input: "()"
- Output: true
Example 2:
- Input: "()[]{}"
- Output: true
Example 3:
- Input: "(]"
- Output: false
Example 4:
- Input: "([)]"
- Output: false
Example 5:
- Input: "{[]}"
- Output: true
-
- package LeetCode;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Stack;
-
- public class L20_ValidParentheses {
- public boolean isValid(String s) {
- int len=s.length();
- Stack<Character> stack=new Stack<Character>();
- if(len==0)
- return true;
- if(len%2!=0)
- return false;
- Map<Character,Character> map=new HashMap<Character,Character>();
- map.put('(',')');
- map.put('[',']');
- map.put('{','}');
- map.put(')',' ');
- map.put(']',' ');
- map.put('}',' ');
- //stack.push(s.charAt(0));
- for(int i=0;i<len;i++)
- {
- if (stack.empty())//栈为空
- stack.push(s.charAt(i));
- else if(s.charAt(i)!=map.get(stack.peek()))//或输入与栈顶不匹配
- stack.push(s.charAt(i));
- else
- stack.pop();
- }
- if(stack.empty())
- return true;
- else
- return false;
- }
-
- public static void main(String[] args){
- L20_ValidParentheses l20=new L20_ValidParentheses();
- String test="([)]";
- boolean result=l20.isValid(test);
- System.out.println(result);
- }
- }