using System.Collections.Generic;
public static void Main()
Console.WriteLine(IsValidReview(""));
Console.WriteLine(IsValidReview("()"));
Console.WriteLine(IsValidReview("()[]{}"));
Console.WriteLine(!IsValidReview("(]"));
Console.WriteLine(!IsValidReview("([)]"));
Console.WriteLine(IsValidReview(""));
public static readonly Dictionary<char, char> brackets = new Dictionary<char, char>{{'(', ')'}, {'[', ']'}, {'{', '}'}};
public static bool IsValidReview(string input)
var endings = new Stack<char>();
foreach (var current in input)
if (brackets.ContainsKey(current))
endings.Push(brackets[current]);
else if (endings.Count == 0 || endings.Pop() != current)
return endings.Count == 0;