20. 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. Open brackets must be closed by the same type of brackets.

  2. Open brackets must be closed in the correct order.

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 '()[]{}'.

public class Solution {
    public bool IsValid(string s) {
        if(s == ""){
          return true;
        }
        var s_array = s.ToCharArray();
        if(s_array.Length % 2 != 0){
          return false;
        }
        
        var stack = new Stack<char>();
        
        foreach(char c in s_array){
          if(c == '(' || c == '{' || c == '['){
            stack.Push(c);
          }
          else{
            if(c == ')' && (stack.Count == 0 || stack.Pop() != '(')){
             return false;
            }
            else if(c == '}' && (stack.Count == 0 || stack.Pop() != '{')){
             return false; 
            }
            else if(c == ']' && (stack.Count == 0 || stack.Pop() != '[')){
              return false;
            }
          }
        }
        return stack.Count == 0 ? true : false;
    }
}

Last updated

Was this helpful?