From 00480b34a02d96e3c717abfc1c01d8fce954de64 Mon Sep 17 00:00:00 2001 From: Nishant Gaurav Date: Wed, 30 Aug 2023 13:48:48 +0530 Subject: [PATCH 1/8] Add itinerary tickets code --- .../hashmap/hashing/ItineraryTickets.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java new file mode 100644 index 000000000000..92bc211937bb --- /dev/null +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java @@ -0,0 +1,44 @@ +package com.thealgorithms.datastructures.hashmap.hashing; + +import java.util.HashMap; + +/** + * This class represents an itinerary of tickets. Given a list of tickets, it finds the + * complete itinerary. + */ +public class ItineraryTickets { + + public static void main(String[] args) { + HashMap tickets = new HashMap<>(); + tickets.put("Chennai", "Bengaluru"); + tickets.put("Mumbai", "Delhi"); + tickets.put("Goa", "Chennai"); + tickets.put("Delhi", "Goa"); + + String start = getStart(tickets); + System.out.print(start); + for (String key : tickets.keySet()) { + System.out.print(" -> " + tickets.get(start)); + start = tickets.get(start); + } + } + + /** + * This method finds the starting point of the itinerary. + * + * @param tickets A map of tickets where the key is the departure point, and the value is the destination. + * @return The starting point of the itinerary. + */ + public static String getStart(HashMap tickets) { + HashMap revTickets = new HashMap<>(); + for (String key : tickets.keySet()) { + revTickets.put(tickets.get(key), key); + } + for (String key : tickets.keySet()) { + if (!revTickets.containsKey(key)) { + return key; // Starting point + } + } + return null; + } +} From de4ca44c114bf83a6f68c795e72091c96214254b Mon Sep 17 00:00:00 2001 From: Nishant Gaurav Date: Sat, 2 Sep 2023 03:31:16 +0530 Subject: [PATCH 2/8] Add JUnit tests for ItineraryTickets --- .../hashmap/hashing/ItineraryTickets.java | 15 ------- .../hashmap/hashing/ItineraryTicketsTest.java | 44 +++++++++++++++++++ 2 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java index 92bc211937bb..171394ccdaba 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java @@ -8,21 +8,6 @@ */ public class ItineraryTickets { - public static void main(String[] args) { - HashMap tickets = new HashMap<>(); - tickets.put("Chennai", "Bengaluru"); - tickets.put("Mumbai", "Delhi"); - tickets.put("Goa", "Chennai"); - tickets.put("Delhi", "Goa"); - - String start = getStart(tickets); - System.out.print(start); - for (String key : tickets.keySet()) { - System.out.print(" -> " + tickets.get(start)); - start = tickets.get(start); - } - } - /** * This method finds the starting point of the itinerary. * diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java new file mode 100644 index 000000000000..44e1936d032c --- /dev/null +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java @@ -0,0 +1,44 @@ +package com.thealgorithms.datastructures.hashmap.hashing; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +public class ItineraryTicketsTest { + + private HashMap tickets; + + @BeforeEach + public void setUp() { + tickets = new HashMap<>(); + tickets.put("Chennai", "Bengaluru"); + tickets.put("Mumbai", "Delhi"); + tickets.put("Goa", "Chennai"); + tickets.put("Delhi", "Goa"); + } + + @Test + public void testGetStart() { + String start = ItineraryTickets.getStart(tickets); + assertEquals("Mumbai", start); + } + + @Test + public void testGetStartEmptyInput() { + HashMap emptyTickets = new HashMap<>(); + String start = ItineraryTickets.getStart(emptyTickets); + assertNull(start); + } + + @Test + public void testGetStartCircularItinerary() { + + tickets.put("Bengaluru", "Mumbai"); + String start = ItineraryTickets.getStart(tickets); + assertNull(start); + } +} From a06bdf6085e636548460370c0381f35e633ce6ca Mon Sep 17 00:00:00 2001 From: Nishant Gaurav <118832071+Imbiber@users.noreply.github.com> Date: Wed, 4 Oct 2023 22:32:07 +0530 Subject: [PATCH 3/8] Update src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../datastructures/hashmap/hashing/ItineraryTickets.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java index 171394ccdaba..33882aa9e874 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java @@ -6,7 +6,9 @@ * This class represents an itinerary of tickets. Given a list of tickets, it finds the * complete itinerary. */ -public class ItineraryTickets { +public final class ItineraryTickets { + private ItineraryTickets() { + } /** * This method finds the starting point of the itinerary. From 6308ee0c59002ab494b3b38dde145201da07e2ca Mon Sep 17 00:00:00 2001 From: Nishant Gaurav <118832071+Imbiber@users.noreply.github.com> Date: Wed, 4 Oct 2023 22:32:24 +0530 Subject: [PATCH 4/8] Update src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../datastructures/hashmap/hashing/ItineraryTicketsTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java index 44e1936d032c..070c78138ab1 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java @@ -36,7 +36,6 @@ public void testGetStartEmptyInput() { @Test public void testGetStartCircularItinerary() { - tickets.put("Bengaluru", "Mumbai"); String start = ItineraryTickets.getStart(tickets); assertNull(start); From 338a0dd4b7a9f0159736706696689af15f192f86 Mon Sep 17 00:00:00 2001 From: Nishant Gaurav <118832071+Imbiber@users.noreply.github.com> Date: Wed, 4 Oct 2023 22:32:34 +0530 Subject: [PATCH 5/8] Update src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../datastructures/hashmap/hashing/ItineraryTicketsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java index 070c78138ab1..75cd94dbc4bd 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java @@ -38,6 +38,6 @@ public void testGetStartEmptyInput() { public void testGetStartCircularItinerary() { tickets.put("Bengaluru", "Mumbai"); String start = ItineraryTickets.getStart(tickets); - assertNull(start); + assertNull(start); } } From 194fd6fd7f0993158ae44dc1d44bde1886285d06 Mon Sep 17 00:00:00 2001 From: Nishant Gaurav <118832071+Imbiber@users.noreply.github.com> Date: Wed, 4 Oct 2023 22:32:51 +0530 Subject: [PATCH 6/8] Update src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --- .../datastructures/hashmap/hashing/ItineraryTickets.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java index 33882aa9e874..3e57475ac445 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTickets.java @@ -16,7 +16,7 @@ private ItineraryTickets() { * @param tickets A map of tickets where the key is the departure point, and the value is the destination. * @return The starting point of the itinerary. */ - public static String getStart(HashMap tickets) { + public static String getStart(final HashMap tickets) { HashMap revTickets = new HashMap<>(); for (String key : tickets.keySet()) { revTickets.put(tickets.get(key), key); From 0aa40c006a54d3384621b6626354a39745c22cb8 Mon Sep 17 00:00:00 2001 From: Nishant Gaurav <118832071+Imbiber@users.noreply.github.com> Date: Sun, 15 Oct 2023 23:15:06 +0530 Subject: [PATCH 7/8] Update ItineraryTicketsTest.java From 5c9d018516f2c3419f38e1705d27dcfcf2e333f9 Mon Sep 17 00:00:00 2001 From: Piotr Idzik <65706193+vil02@users.noreply.github.com> Date: Sun, 15 Oct 2023 23:06:52 +0200 Subject: [PATCH 8/8] style: use proper formatting --- .../hashmap/hashing/ItineraryTicketsTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java index 75cd94dbc4bd..5137d9ac606b 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/ItineraryTicketsTest.java @@ -1,13 +1,12 @@ package com.thealgorithms.datastructures.hashmap.hashing; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.HashMap; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import java.util.HashMap; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + public class ItineraryTicketsTest { private HashMap tickets;