From 37bb532a28ee5369b18ccac413dae3660f66353a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Oct 2024 17:11:26 +0530 Subject: [PATCH 01/13] LinkedList added --- .../LinkedList/LinkedListTraversal.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java diff --git a/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java b/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java new file mode 100644 index 000000000000..2c1dc4e538ec --- /dev/null +++ b/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java @@ -0,0 +1,55 @@ +package com.thealgorithms.LinkedList; + +public class LinkedListTraversal { + + private static class Node{ + private int data; + private Node next; + + public Node(int data){ + this.data = data; + } + + public Node(){ + } + } + + private Node head; + + public Node addElement(int val,Node node){ + + Node newNode = new Node(val); + + if (node == null){ + node = newNode; + head = node; + return head; + } + + Node temp = node; + while(temp.next != null){ + temp = temp.next; + } + + temp.next = new Node(val); + return node; + } + + public void traverse(Node node){ + while (node != null){ + System.out.println(node.data); + node = node.next; + } + } + + public static void main(String[] args) { + int[] arr = {1,7,3,4}; + LinkedListTraversal linkedList = new LinkedListTraversal(); + Node node = new Node(); + for (int i = 0; i < arr.length; i++) { + node = linkedList.addElement(arr[i],node); + } + + linkedList.traverse(node.next); + } +} From 17d0ca3cc3624a2a15d8bb5ab83f4c212b61ac4c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Oct 2024 17:45:28 +0530 Subject: [PATCH 02/13] LinkedList added --- .../thealgorithms/LinkedList/LinkedListTraversal.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java b/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java index 2c1dc4e538ec..f057a74086cf 100644 --- a/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java +++ b/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java @@ -2,9 +2,9 @@ public class LinkedListTraversal { - private static class Node{ - private int data; - private Node next; + public static class Node{ + public int data; + public Node next; public Node(int data){ this.data = data; @@ -14,7 +14,7 @@ public Node(){ } } - private Node head; + public Node head; public Node addElement(int val,Node node){ @@ -37,7 +37,7 @@ public Node addElement(int val,Node node){ public void traverse(Node node){ while (node != null){ - System.out.println(node.data); + System.out.print(node.data+"->"); node = node.next; } } From ee3cacbeb55c27a232963369d56293fff3e71362 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Oct 2024 19:50:45 +0530 Subject: [PATCH 03/13] feat: recursion subsets added --- .../LinkedList/LinkedListTraversal.java | 55 ------------------- .../com/thealgorithms/Recursion/Subsets.java | 28 ++++++++++ .../thealgorithms/Recursion/SubsetsTest.java | 28 ++++++++++ 3 files changed, 56 insertions(+), 55 deletions(-) delete mode 100644 src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java create mode 100644 src/main/java/com/thealgorithms/Recursion/Subsets.java create mode 100644 src/test/java/com/thealgorithms/Recursion/SubsetsTest.java diff --git a/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java b/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java deleted file mode 100644 index f057a74086cf..000000000000 --- a/src/main/java/com/thealgorithms/LinkedList/LinkedListTraversal.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.thealgorithms.LinkedList; - -public class LinkedListTraversal { - - public static class Node{ - public int data; - public Node next; - - public Node(int data){ - this.data = data; - } - - public Node(){ - } - } - - public Node head; - - public Node addElement(int val,Node node){ - - Node newNode = new Node(val); - - if (node == null){ - node = newNode; - head = node; - return head; - } - - Node temp = node; - while(temp.next != null){ - temp = temp.next; - } - - temp.next = new Node(val); - return node; - } - - public void traverse(Node node){ - while (node != null){ - System.out.print(node.data+"->"); - node = node.next; - } - } - - public static void main(String[] args) { - int[] arr = {1,7,3,4}; - LinkedListTraversal linkedList = new LinkedListTraversal(); - Node node = new Node(); - for (int i = 0; i < arr.length; i++) { - node = linkedList.addElement(arr[i],node); - } - - linkedList.traverse(node.next); - } -} diff --git a/src/main/java/com/thealgorithms/Recursion/Subsets.java b/src/main/java/com/thealgorithms/Recursion/Subsets.java new file mode 100644 index 000000000000..fc3660b8957c --- /dev/null +++ b/src/main/java/com/thealgorithms/Recursion/Subsets.java @@ -0,0 +1,28 @@ +package com.thealgorithms.Recursion; + +// program to find power set of a string + +import java.util.ArrayList; + +public class Subsets { + public static void main(String[] args) { + String str = "abc"; + ArrayList res = new ArrayList<>(); + subset("",str,res); + System.out.println(res); + } + + public static void subset(String p,String up,ArrayList res){ + if(up.isEmpty()){ + res.add(p); + return; + } + + // Taking the character + char ch = up.charAt(0); + // Adding the character in the recursion + subset(p+ch,up.substring(1),res); + // Not adding the character in the recursion + subset(p,up.substring(1),res); + } +} diff --git a/src/test/java/com/thealgorithms/Recursion/SubsetsTest.java b/src/test/java/com/thealgorithms/Recursion/SubsetsTest.java new file mode 100644 index 000000000000..4aed1e9445f6 --- /dev/null +++ b/src/test/java/com/thealgorithms/Recursion/SubsetsTest.java @@ -0,0 +1,28 @@ +package com.thealgorithms.Recursion; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; + +public class SubsetsTest { + + @Test + void subset(){ + String str = "abc"; + ArrayList ans = new ArrayList<>(); + ArrayList actual = new ArrayList<>(); + ans.add("abc"); + ans.add("ab"); + ans.add("ac"); + ans.add("a"); + ans.add("bc"); + ans.add("b"); + ans.add("c"); + ans.add(""); + + Subsets.subset("",str,actual); + assertEquals(ans.toString(),actual.toString()); + } +} From 9e5057be8cbef970d00721d3ff6eb71d34ec34fc Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 14:52:49 +0530 Subject: [PATCH 04/13] Update and rename SubsetsTest.java to GenerateSubsetsTest.java --- .../Recursion/GenerateSubsetsTest.java | 36 +++++++++++++++++++ .../thealgorithms/Recursion/SubsetsTest.java | 28 --------------- 2 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java delete mode 100644 src/test/java/com/thealgorithms/Recursion/SubsetsTest.java diff --git a/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java new file mode 100644 index 000000000000..301addd1b960 --- /dev/null +++ b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java @@ -0,0 +1,36 @@ +package com.thealgorithms.Recursion; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import java.util.List; +import org.junit.jupiter.api.Test; + +public class GenerateSubsetsTest { + + @Test + void subsetRecursionTestOne() { + String str = "abc"; + String[] expected = new String[] {"abc", "ab", "ac", "a", "bc", "b", "c", ""}; + + List ans = GenerateSubsets.subsetRecursion("", str); + assertArrayEquals(ans.toArray(), expected); + } + + @Test + void subsetRecursionTestTwo() { + String str = "cbf"; + String[] expected = new String[] {"cbf", "cb", "cf", "c", "bf", "b", "f", ""}; + + List ans = GenerateSubsets.subsetRecursion("", str); + assertArrayEquals(ans.toArray(), expected); + } + + @Test + void subsetRecursionTestThree() { + String str = "aba"; + String[] expected = new String[] {"aba", "ab", "aa", "a", "ba", "b", "a", ""}; + + List ans = GenerateSubsets.subsetRecursion("", str); + assertArrayEquals(ans.toArray(), expected); + } +} diff --git a/src/test/java/com/thealgorithms/Recursion/SubsetsTest.java b/src/test/java/com/thealgorithms/Recursion/SubsetsTest.java deleted file mode 100644 index 4aed1e9445f6..000000000000 --- a/src/test/java/com/thealgorithms/Recursion/SubsetsTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.thealgorithms.Recursion; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; - -public class SubsetsTest { - - @Test - void subset(){ - String str = "abc"; - ArrayList ans = new ArrayList<>(); - ArrayList actual = new ArrayList<>(); - ans.add("abc"); - ans.add("ab"); - ans.add("ac"); - ans.add("a"); - ans.add("bc"); - ans.add("b"); - ans.add("c"); - ans.add(""); - - Subsets.subset("",str,actual); - assertEquals(ans.toString(),actual.toString()); - } -} From e49a4142b172417c94217d63d25657c178da89e6 Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 14:53:54 +0530 Subject: [PATCH 05/13] Update and rename Subsets.java to GenerateSubsets.java --- .../Recursion/GenerateSubsets.java | 28 +++++++++++++++++++ .../com/thealgorithms/Recursion/Subsets.java | 28 ------------------- 2 files changed, 28 insertions(+), 28 deletions(-) create mode 100644 src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java delete mode 100644 src/main/java/com/thealgorithms/Recursion/Subsets.java diff --git a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java new file mode 100644 index 000000000000..474daa38bef0 --- /dev/null +++ b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java @@ -0,0 +1,28 @@ +package com.thealgorithms.Recursion; + +// program to find power set of a string + +import java.util.ArrayList; +import java.util.List; + +public class GenerateSubsets { + + public static List subsetRecursion(String p, String up) { + if (up.isEmpty()) { + List list = new ArrayList<>(); + list.add(p); + return list; + } + + // Taking the character + char ch = up.charAt(0); + // Adding the character in the recursion + List left = subsetRecursion(p + ch, up.substring(1)); + // Not adding the character in the recursion + List right = subsetRecursion(p, up.substring(1)); + + left.addAll(right); + + return left; + } +} diff --git a/src/main/java/com/thealgorithms/Recursion/Subsets.java b/src/main/java/com/thealgorithms/Recursion/Subsets.java deleted file mode 100644 index fc3660b8957c..000000000000 --- a/src/main/java/com/thealgorithms/Recursion/Subsets.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.thealgorithms.Recursion; - -// program to find power set of a string - -import java.util.ArrayList; - -public class Subsets { - public static void main(String[] args) { - String str = "abc"; - ArrayList res = new ArrayList<>(); - subset("",str,res); - System.out.println(res); - } - - public static void subset(String p,String up,ArrayList res){ - if(up.isEmpty()){ - res.add(p); - return; - } - - // Taking the character - char ch = up.charAt(0); - // Adding the character in the recursion - subset(p+ch,up.substring(1),res); - // Not adding the character in the recursion - subset(p,up.substring(1),res); - } -} From 89687c81ac90df23cb82f9d745a0f90c7f224cd6 Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:06:58 +0530 Subject: [PATCH 06/13] Update GenerateSubsets.java --- src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java index 474daa38bef0..b551e55588fa 100644 --- a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java +++ b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.List; -public class GenerateSubsets { +public final class GenerateSubsets { public static List subsetRecursion(String p, String up) { if (up.isEmpty()) { From eceb162b192703d3c1a99a7291b2c35c0aa2a97f Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:07:14 +0530 Subject: [PATCH 07/13] Update GenerateSubsetsTest.java --- .../java/com/thealgorithms/Recursion/GenerateSubsetsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java index 301addd1b960..337bf9cd97b1 100644 --- a/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java +++ b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java @@ -5,7 +5,7 @@ import java.util.List; import org.junit.jupiter.api.Test; -public class GenerateSubsetsTest { +public final class GenerateSubsetsTest { @Test void subsetRecursionTestOne() { From 6d840a27b9451297e85f5055ad4ab46c0d2e0ed3 Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:12:27 +0530 Subject: [PATCH 08/13] Update GenerateSubsets.java --- .../java/com/thealgorithms/Recursion/GenerateSubsets.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java index b551e55588fa..f40a10d990c5 100644 --- a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java +++ b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java @@ -7,6 +7,10 @@ public final class GenerateSubsets { + private GenerateSubsets() { + throw new UnsupportedOperationException("Utility class"); + } + public static List subsetRecursion(String p, String up) { if (up.isEmpty()) { List list = new ArrayList<>(); From 5043123ef312baba6654e9b12eec467bb65db479 Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:13:25 +0530 Subject: [PATCH 09/13] Update GenerateSubsets.java --- .../java/com/thealgorithms/Recursion/GenerateSubsets.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java index f40a10d990c5..f930df791f9e 100644 --- a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java +++ b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java @@ -8,8 +8,8 @@ public final class GenerateSubsets { private GenerateSubsets() { - throw new UnsupportedOperationException("Utility class"); - } + throw new UnsupportedOperationException("Utility class"); + } public static List subsetRecursion(String p, String up) { if (up.isEmpty()) { From 61a81c98f8c225cd041f08644b735b585289791a Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:12:47 +0530 Subject: [PATCH 10/13] Update GenerateSubsets.java --- .../com/thealgorithms/Recursion/GenerateSubsets.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java index f930df791f9e..c4eaeeb95b96 100644 --- a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java +++ b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java @@ -5,13 +5,17 @@ import java.util.ArrayList; import java.util.List; -public final class GenerateSubsets { +public class GenerateSubsets { private GenerateSubsets() { throw new UnsupportedOperationException("Utility class"); } - public static List subsetRecursion(String p, String up) { + public static List subsetRecursion(String str) { + return doRecursion("", str); + } + + private static List doRecursion(String p, String up) { if (up.isEmpty()) { List list = new ArrayList<>(); list.add(p); @@ -21,9 +25,9 @@ public static List subsetRecursion(String p, String up) { // Taking the character char ch = up.charAt(0); // Adding the character in the recursion - List left = subsetRecursion(p + ch, up.substring(1)); + List left = doRecursion(p + ch, up.substring(1)); // Not adding the character in the recursion - List right = subsetRecursion(p, up.substring(1)); + List right = doRecursion(p, up.substring(1)); left.addAll(right); From d3d154e9324aa04592483ddc60edc7a0f2bcfb7b Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:13:40 +0530 Subject: [PATCH 11/13] Update GenerateSubsetsTest.java --- .../com/thealgorithms/Recursion/GenerateSubsetsTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java index 337bf9cd97b1..f793b5f03325 100644 --- a/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java +++ b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java @@ -5,14 +5,14 @@ import java.util.List; import org.junit.jupiter.api.Test; -public final class GenerateSubsetsTest { +public class GenerateSubsetsTest { @Test void subsetRecursionTestOne() { String str = "abc"; String[] expected = new String[] {"abc", "ab", "ac", "a", "bc", "b", "c", ""}; - List ans = GenerateSubsets.subsetRecursion("", str); + List ans = GenerateSubsets.subsetRecursion(str); assertArrayEquals(ans.toArray(), expected); } @@ -21,7 +21,7 @@ void subsetRecursionTestTwo() { String str = "cbf"; String[] expected = new String[] {"cbf", "cb", "cf", "c", "bf", "b", "f", ""}; - List ans = GenerateSubsets.subsetRecursion("", str); + List ans = GenerateSubsets.subsetRecursion(str); assertArrayEquals(ans.toArray(), expected); } @@ -30,7 +30,7 @@ void subsetRecursionTestThree() { String str = "aba"; String[] expected = new String[] {"aba", "ab", "aa", "a", "ba", "b", "a", ""}; - List ans = GenerateSubsets.subsetRecursion("", str); + List ans = GenerateSubsets.subsetRecursion(str); assertArrayEquals(ans.toArray(), expected); } } From 25874a93b1e011623e6d747b19f774825ed49186 Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:15:59 +0530 Subject: [PATCH 12/13] Update GenerateSubsets.java --- src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java index c4eaeeb95b96..417bf1307790 100644 --- a/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java +++ b/src/main/java/com/thealgorithms/Recursion/GenerateSubsets.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.List; -public class GenerateSubsets { +public final class GenerateSubsets { private GenerateSubsets() { throw new UnsupportedOperationException("Utility class"); From ba81599a7abd6cb94b75392723cf66fa93517af9 Mon Sep 17 00:00:00 2001 From: Tuhinm2002 <75078694+Tuhinm2002@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:16:16 +0530 Subject: [PATCH 13/13] Update GenerateSubsetsTest.java --- .../java/com/thealgorithms/Recursion/GenerateSubsetsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java index f793b5f03325..d4bc7e488f80 100644 --- a/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java +++ b/src/test/java/com/thealgorithms/Recursion/GenerateSubsetsTest.java @@ -5,7 +5,7 @@ import java.util.List; import org.junit.jupiter.api.Test; -public class GenerateSubsetsTest { +public final class GenerateSubsetsTest { @Test void subsetRecursionTestOne() {