/// <summary> /// this method will determine if there are balanced bracket matches /// </summary> /// <param name="input">a string</param> /// <returns>a boolean</returns> public static bool MultiBracketValidation(string input) { CharStack bracketStack = new CharStack(); if (input == "") { return(false); } for (int i = 0; i < input.Length; i++) { if (input[i] == '{' || input[i] == '[' || input[i] == '(') { bracketStack.Push(input[i]); } if (input[i] == '}') { if (bracketStack.Top != null && bracketStack.Top.Value == '{') { bracketStack.Pop(); } else { return(false); } } else if (input[i] == ']') { if (bracketStack.Top != null && bracketStack.Top.Value == '[') { bracketStack.Pop(); } else { return(false); } } else if (input[i] == ')') { if (bracketStack.Top != null && bracketStack.Top.Value == '(') { bracketStack.Pop(); } else { return(false); } } } if (bracketStack.Top == null) { return(true); } else { return(false); } }
private static bool AreValidOutwardLetters(CharStack stack) { // All post codes start with a letter so there will always be at // least one letter in the stack for this method to get called, so // no need to check if the stack is empty here. if (!IsValidFirstAlpha(stack.Pop())) { return(false); } if (!stack.Empty && !IsValidSecondAlpha(stack.Pop())) { return(false); } return(stack.Empty || IsValidThirdAlpha(stack.Pop())); }
/// <summary> /// Takes in a string, and returns a boolean indicating whether the given string /// contains valid code bracket pairs, or false if it contains invalid/unpaired brackets. /// </summary> /// <param name="input"></param> /// <returns> Boolean indicating if given string has valid bracket pairs </returns> public static bool MultiBracketValidation(string input) { CharStack stack = new CharStack(); foreach (char c in input) { if (c == '[' || c == '(' || c == '{') { stack.Push(new CharNode(c)); } else if (c == ']') { if (stack.Peek() == null || stack.Pop().Value != '[') { return(false); } } else if (c == ')') { if (stack.Peek() == null || stack.Pop().Value != '(') { return(false); } } else if (c == '}') { if (stack.Peek() == null || stack.Pop().Value != '{') { return(false); } } } if (stack.Peek() != null) { return(false); } else { return(true); } }
static bool IsPalindrome(CharLinkedList linkedList) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); CharStack stack = new CharStack(new CharLinkedList()); CharNode current = linkedList.Head; while (current != null) { char value = current.Value; sb1.Append(value); stack.Push(value); current = current.Next; } while (!stack.IsEmpty()) { sb2.Append(stack.Pop()); } return(sb1.ToString() == sb2.ToString()); }