C# Code: Bracket Matching Algorithm (Stack Implementation)
TWrite a function in C# that checks whether a given string has balanced parentheses. The string may contain the characters (, ), {, }, [, ], and <, >
For example:
- Input: "([{}])" → Output: True
- Input: "([ {]})" → Output: False
- Input: "<>()[]{}" → Output: True
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ParenthesesMatching
{
public static class BracketMatcher
{
private static readonly Dictionary<char, char> backets = new()
{
{ '(', ')' },
{ '{', '}' },
{ '[', ']' }
};
private static readonly HashSet<char> openingBrackets = new(backets.Keys);
private static readonly HashSet<char> closingBrackets = new(backets.Values);
public static bool AreBracketsMatched(string input)
{
Stack<char> stack = new();
foreach (char c in input)
{
if (openingBrackets.Contains(c))
{
stack.Push(c);
}
else if (closingBrackets.Contains(c))
{
if (stack.Count == 0)
{
return false; // No matching opening bracket
}
char lastOpeningBracket = stack.Pop();
if (backets[lastOpeningBracket] != c)
{
return false; // Mismatched brackets (e.g., [})
}
}
}
return stack.Count == 0; // All opening brackets were matched and popped
}
}
}
// Example usage that produces the output below:
Console.WriteLine(BracketMatcher.IsBalanced("[()()]{}"));
Console.WriteLine(BracketMatcher.IsBalanced("([{}])"));
Console.WriteLine(BracketMatcher.IsBalanced("([ {]})"));
Console.WriteLine(BracketMatcher.IsBalanced("<>()[]{}"));
Program Output
True
True
False
True
Comments
Post a Comment