private static ReverseIterator CheckOutwardCodeEnd(ReverseIterator iterator, ref CharStack stack) { // This checks for outward parts ending in 1A, 11 or 1 char endChar = iterator.GetNext(); if (IsLetter(endChar)) { if (!IsNumber(iterator.GetNext())) { return(ReverseIterator.Invalid); } stack.Push(endChar); } else if (IsNumber(endChar)) { ReverseIterator lookAhead = iterator; if (IsNumber(lookAhead.GetNext())) { return(lookAhead); } } else { return(ReverseIterator.Invalid); } return(iterator); }
/// <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); } }
static void Main(string[] args) { CharStack charStack = new CharStack(30); string temp; while (true) { temp = Console.ReadLine(); if (temp.Length > 30) { Console.WriteLine("입력한 수식이 스택 최대허용범위를 초과했습니다."); } else { break; } } char[] charArr = temp.ToCharArray(); for (int i = 0; i < temp.Length; i++) { charStack.Push(charArr[i]); } // charStack.printArr(); // 3*2+7-1/5+6 for (int i = charArr.Length - 2; i > 0; i = i - 2) { if (charArr[i] == '*') { } else if (charArr[i] == '/') { } } /* * IntStack intStack = new IntStack(10); * * intStack.Push(1); * intStack.Push(2); * intStack.Push(5); * intStack.Push(7); * intStack.Pop(); * intStack.Push(3); * intStack.Pop(); * intStack.Pop(); * intStack.Push(-2); * * intStack.printArr(); */ }
/// <inheritdoc /> public override int CheckOutwardCode(string postcode, int index) { // Three basic scenarios: // + Letter Number Letter (Letter) - AA1A/A1A // + Number Number Letter (Letter) - AA11/A11 // + Number Letter (Letter) - AA1/A1 var iterator = new ReverseIterator(this.SkipInvalid, postcode, index); var stack = new CharStack(3); iterator = CheckOutwardCodeEnd(iterator, ref stack); char current = iterator.GetNext(); if (IsLetter(current)) { stack.Push(current); int start; ReverseIterator lookAhead = iterator; current = lookAhead.GetNext(); if (IsLetter(current)) { stack.Push(current); start = lookAhead.Index; } else { start = iterator.Index; } if (AreValidOutwardLetters(stack)) { return(start); } } return(InvalidPostcode); }
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()); }
/// <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); } }