diff --git a/src/main/java/problemset/a3228/MaximumNumberOfOpsToMoveOnesToTheEnd.java b/src/main/java/problemset/a3228/MaximumNumberOfOpsToMoveOnesToTheEnd.java new file mode 100644 index 0000000..d038a7d --- /dev/null +++ b/src/main/java/problemset/a3228/MaximumNumberOfOpsToMoveOnesToTheEnd.java @@ -0,0 +1,18 @@ +package problemset.a3228; + +public class MaximumNumberOfOpsToMoveOnesToTheEnd { + public int maxOperations(String s) { + int res = 0, countOnes = 0; + int n = s.length(); + + for (int i = 0; i < n; i++) { + char curr = s.charAt(i); + + if (curr == '1') + countOnes++; + else if (i > 0 && s.charAt(i - 1) == '1') + res += countOnes; + } + return res; + } +} diff --git a/src/test/java/problemset/a3228/MaximumNumberOfOpsToMoveOnesToTheEndTest.java b/src/test/java/problemset/a3228/MaximumNumberOfOpsToMoveOnesToTheEndTest.java new file mode 100644 index 0000000..938ba13 --- /dev/null +++ b/src/test/java/problemset/a3228/MaximumNumberOfOpsToMoveOnesToTheEndTest.java @@ -0,0 +1,30 @@ +package problemset.a3228; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class MaximumNumberOfOpsToMoveOnesToTheEndTest { + + private MaximumNumberOfOpsToMoveOnesToTheEnd max; + private String testcaseOne; + private String testcaseTwo; + + @BeforeEach + void setUp() { + max = new MaximumNumberOfOpsToMoveOnesToTheEnd(); + testcaseOne = "1001101"; + testcaseTwo = "00111"; + } + + @Test + void test_maxOperations_happyCase() { + assertEquals(4, max.maxOperations(testcaseOne)); + } + + @Test + void test_maxOperations_edgeCase() { + assertEquals(0, max.maxOperations(testcaseTwo)); + } +} \ No newline at end of file