/// <summary> /// Complexity of this code is O(N) /// </summary> /// <param name="expression"></param> /// <returns></returns> public static bool HasMatchingParans(string expression) { try { Stack.Stack <char> openPanransFound = new Stack.Stack <char>(); foreach (char expressionChar in expression) { if (openParans.Contains(expressionChar)) { openPanransFound.PUSH(expressionChar); } if (matchingOpens.ContainsKey(expressionChar)) { if (openPanransFound.GetSize() == 0) { return(false); } if (!matchingOpens.TryGetValue(expressionChar, out char openForTheCloseFound) || !openPanransFound.POP().Equals(openForTheCloseFound)) { return(false); } } } return(openPanransFound.IsEmpty()); } catch (Stack.StackOverflowException ex) { Console.WriteLine(ex); } catch (Stack.StackUnderflowException ex) { Console.WriteLine(ex); } return(false); }
public int POP() { minimumStack.POP(); return(dataStack.POP()); }