From 6e357de888c61b269840fb290f01c059330ba1c8 Mon Sep 17 00:00:00 2001 From: Trishun Date: Sat, 5 Nov 2022 22:31:46 +0100 Subject: [PATCH] Resolves Java Stack task --- .../datastructures/stack/Solution.java | 41 ++++++++++++ .../datastructures/stack/SolutionTest.java | 67 +++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 src/main/java/eu/ztsh/training/hackerrank/datastructures/stack/Solution.java create mode 100644 src/test/java/eu/ztsh/training/hackerrank/datastructures/stack/SolutionTest.java diff --git a/src/main/java/eu/ztsh/training/hackerrank/datastructures/stack/Solution.java b/src/main/java/eu/ztsh/training/hackerrank/datastructures/stack/Solution.java new file mode 100644 index 0000000..00c8102 --- /dev/null +++ b/src/main/java/eu/ztsh/training/hackerrank/datastructures/stack/Solution.java @@ -0,0 +1,41 @@ +package eu.ztsh.training.hackerrank.datastructures.stack; + +import java.util.Map; +import java.util.Scanner; +import java.util.Stack; + +/** + * Java Stack task. + * source: https://www.hackerrank.com/challenges/java-stack + */ +public class Solution { + + public static void main(String[] args) { + var scanner = new Scanner(System.in); + while (scanner.hasNext()) { + var stack = new Stack(); + var line = scanner.next(); + for (char input : line.toCharArray()) { + if (stack.empty()) { + stack.push(input); + continue; + } + char head = stack.peek(); + if (closingChars.getOrDefault(input, '0').equals(head)) { + stack.pop(); + } else { + stack.push(input); + } + } + System.out.println(stack.empty()); + } + + } + + private static final Map closingChars = Map.of( + ']', '[', + '}', '{', + ')', '(' + ); + +} diff --git a/src/test/java/eu/ztsh/training/hackerrank/datastructures/stack/SolutionTest.java b/src/test/java/eu/ztsh/training/hackerrank/datastructures/stack/SolutionTest.java new file mode 100644 index 0000000..0ecec40 --- /dev/null +++ b/src/test/java/eu/ztsh/training/hackerrank/datastructures/stack/SolutionTest.java @@ -0,0 +1,67 @@ +package eu.ztsh.training.hackerrank.datastructures.stack; + +import java.util.List; +import eu.ztsh.training.hackerrank.HackerRankTest; +import eu.ztsh.training.hackerrank.SolutionClassDescription; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +@DisplayName("HackerRank challenges: Java Stack") +class SolutionTest extends HackerRankTest { + + @Test + public void testCase0() { + simpleAssert( + List.of( + "{}()", + "({()})", + "{}(", + "[]" + ), + List.of( + "true", + "true", + "false", + "true" + ) + ); + } + + @Test + public void testCase1() { + simpleAssert( + List.of( + "({}[])", + "(({()})))", + "({(){}()})()({(){}()})(){()}", + "{}()))(()()({}}{}", + "}}}}", + "))))", + "{{{", + "(((", + "[]{}(){()}((())){{{}}}{()()}{{}{}}", + "[[]][][]", + "}{" + ), + List.of( + "true", + "false", + "true", + "false", + "false", + "false", + "false", + "false", + "true", + "true", + "false" + ) + ); + } + + @Override + protected SolutionClassDescription getSolutionClassDescription() { + return new SolutionClassDescription(Solution.class); + } + +}