Skip to content

Instantly share code, notes, and snippets.

@gdyrrahitis
Last active November 9, 2018 20:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gdyrrahitis/35d93d64854fa87fb9862bbf732821cc to your computer and use it in GitHub Desktop.
Save gdyrrahitis/35d93d64854fa87fb9862bbf732821cc to your computer and use it in GitHub Desktop.
public static class Analyzer
{
public static bool HasValidOpeningClosingBrackets(string input)
{
var stack = new Stack<char>(input.Length);
// Test each character in string input
foreach (var character in input)
{
switch (character)
{
// When opening bracket, push it in stack
case '{':
case '[':
case '(':
stack.Push(character);
break;
// When closing bracket, pop it and test it
case '}':
case ']':
case ')':
var stored = stack.Pop();
// If the popped item does not match, check has failed
if (stored == '{' && character != '}' ||
stored == '[' && character != ']' ||
stored == '(' && character != ')')
{
return false;
}
break;
default:
break;
}
}
// Check hasn't failed yet, input is okay
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment