diff --git a/src/main/java/com/thealgorithms/strings/StringCompression.java b/src/main/java/com/thealgorithms/strings/StringCompression.java index ddbee4c4f91a..85bc0e4db641 100644 --- a/src/main/java/com/thealgorithms/strings/StringCompression.java +++ b/src/main/java/com/thealgorithms/strings/StringCompression.java @@ -1,7 +1,8 @@ package com.thealgorithms.strings; -/* References : https://en.wikipedia.org/wiki/Run-length_encoding - * String compression algorithm deals with encoding the string, that is, shortening the size of the - * string + +/** + * References : https://en.wikipedia.org/wiki/Run-length_encoding + * String compression algorithm deals with encoding the string, that is, shortening the size of the string * @author Swarga-codes (https://github.com/Swarga-codes) */ public final class StringCompression { @@ -14,19 +15,16 @@ private StringCompression() { * @return the compressed character array as string */ public static String compress(String input) { - // Keeping the count as 1 since every element present will have atleast a count - // of 1 + // Keeping the count as 1 since every element present will have at least a count of 1 int count = 1; String compressedString = ""; - // Base condition to check whether the array is of size 1, if it is then we - // return the array + // Base condition to check whether the array is of size 1, if it is then we return the array if (input.length() == 1) { return "" + input.charAt(0); } // If the array has a length greater than 1 we move into this loop for (int i = 0; i < input.length() - 1; i++) { - // here we check for similarity of the adjacent elements and change the count - // accordingly + // here we check for similarity of the adjacent elements and change the count accordingly if (input.charAt(i) == input.charAt(i + 1)) { count = count + 1; } @@ -54,7 +52,6 @@ public static String compress(String input) { public static String appendCount(String res, int count, char ch) { if (count > 1) { res += ch + "" + count; - count = 1; } else { res += ch + ""; } diff --git a/src/test/java/com/thealgorithms/strings/StringCompressionTest.java b/src/test/java/com/thealgorithms/strings/StringCompressionTest.java index bbd56c19dc23..fdec311f8f0a 100644 --- a/src/test/java/com/thealgorithms/strings/StringCompressionTest.java +++ b/src/test/java/com/thealgorithms/strings/StringCompressionTest.java @@ -1,4 +1,5 @@ package com.thealgorithms.strings; + import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.params.ParameterizedTest; @@ -6,7 +7,7 @@ public class StringCompressionTest { @ParameterizedTest - @CsvSource({"a,a", "aabbb,a2b3", "abbbc,ab3c", "aabccd,a2bc2d"}) + @CsvSource({"'a', 'a'", "'aabbb', 'a2b3'", "'abbbc', 'ab3c'", "'aabccd', 'a2bc2d'", "'aaaabbbcccc', 'a4b3c4'", "'abcd', 'abcd'", "'aabbccdd', 'a2b2c2d2'", "'aaabbaa', 'a3b2a2'", "'', ''", "'a', 'a'", "'aaaaa', 'a5'", "'aabb', 'a2b2'", "'aabbbaaa', 'a2b3a3'", "'qwerty', 'qwerty'"}) void stringCompressionTest(String input, String expectedOutput) { String output = StringCompression.compress(input); assertEquals(expectedOutput, output);