Friday, August 06, 2010

bracket matching

Check for brackets matching - curly, square, round, {}[]() - and return boolean.
ex: return true for
{}
{[()]}
{()[]}
return false for
{
}


bool bracketMatching(char[] str):
    bool result = true
    Stack stack = new Stack()
   
    //close-open bracket map
    Hashmap bracketMap = new Hashmap()
    bracketMap.Add('}', '{')
    bracketMap.Add(')', '(')
    bracketMap.Add(']', '[')

    foreach (char c in str):
        if (c == '{' || c == '[' || c == '('):
            stack.Push(c)

        if (c == '}' || c == ']' || c == ')'):
            if (stack.isEmpty
()):
                result = false
                break
            //tos should be open bracket and c close bracket
            char tos = stack.Pop()
            if (tos != bracketMap[c]):
                result = false
                break
    if (!stack.isEmpty()):
        result = false
    return result


[Hat tip to BR]

0 comments:

Post a Comment