Valid Parentheses
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
1 2  |  | 
    Example 1:
    Input: s = "()"
    Output: true
    Example 2:
    Input: s = "()[]{}"
    Output: true
    Example 3:
    Input: s = "(]"
    Output: false
    Example 4:
    Input: s = "([)]"
    Output: false
    Example 5:
    Input: s = "{[]}"
    Output: true
    Constraints:
        1 <= s.length <= 104
        s consists of parentheses only '()[]{}'.
Functional Implementation of WordPattern¶
  public boolean isValid1(String s) {
      char[] stack = new char[s.length()];
      int si = -1;
      for (int i = 0; i != s.length(); ++i) {
          switch (s.charAt(i)) {
              case '(':
                  stack[++si] = ')';
                  break;
              case '{':
                  stack[++si] = '}';
                  break;
              case '[':
                  stack[++si] = ']';
                  break;
              default:
                  if (si == -1 || stack[si] != s.charAt(i))
                      return false;
                  --si;
          }
      }
      return si == -1;
  }
  public boolean isValid2(String s) {
      Stack<Character> a = new Stack<>();
      for (int i = 0; i < s.length(); i++) {
          char c = s.charAt(i);
          if ("({[".indexOf(c) >= 0)
              a.push(c);
          else {
              if (a.size() == 0)
                  return false;
              else {
                  char d = (char) a.pop();
                  if (c == ')' && d != '(')
                      return false;
                  else if (c == '}' && d != '{')
                      return false;
                  else if (c == ']' && d != '[')
                      return false;
              }
          }
      }
      if (a.size() != 0)
          return false;
      return true;
  }
See also :¶
Linear Search
Jump Search
Binary Search
Exponential Search
Interpolation Search