20. Valid Parentheses
Easy
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.easy;
import java.util.HashMap;
import java.util.Stack;
public class ValidParentheses {
// Hash table that takes care of the mappings.
private HashMap<Character, Character> mappings;
// Initialize hash map with mappings. This simply makes the code easier to
// read.
public ValidParentheses() {
mappings = new HashMap<Character, Character>();
mappings.put(')', '(');
mappings.put('}', '{');
mappings.put(']', '[');
}
public boolean isValid(String s) {
// Initialize a stack to be used in the algorithm.
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// If the current character is a closing bracket.
if (this.mappings.containsKey(c)) {
// Get the top element of the stack. If the stack is empty, set
// a dummy value of '#'
char topElement = stack.isEmpty() ? '#' : stack.pop();
// If the mapping for this bracket doesn't match the stack's top
// element, return false.
if (topElement != this.mappings.get(c)) {
return false;
}
} else {
// If it was an opening bracket, push to the stack.
stack.push(c);
}
}
// If the stack still contains elements, then it is an invalid
// expression.
return stack.isEmpty();
}
@org.junit.Test
public void test() {
String s1 = "()";
String s2 = "()[]{}";
String s3 = "(]";
String s4 = "([)]";
String s5 = "{[]}";
System.out.println(isValid(s1));
System.out.println(isValid(s2));
System.out.println(isValid(s3));
System.out.println(isValid(s4));
System.out.println(isValid(s5));
}
}
转载于:https://www.cnblogs.com/denggelin/p/11535065.html