From 60f228206b94602825873ad57560389b838ac132 Mon Sep 17 00:00:00 2001 From: Nikita Rusetskii Date: Fri, 2 Aug 2024 21:52:41 +0200 Subject: [PATCH] 1544. Make The String Great --- .../java/com/xtenzq/leetcode/MakeGood.java | 28 +++++++++++++++++++ .../com/xtenzq/leetcode/MakeGoodTest.java | 24 ++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 algorithms-and-data-structures/src/main/java/com/xtenzq/leetcode/MakeGood.java create mode 100644 algorithms-and-data-structures/src/test/java/com/xtenzq/leetcode/MakeGoodTest.java diff --git a/algorithms-and-data-structures/src/main/java/com/xtenzq/leetcode/MakeGood.java b/algorithms-and-data-structures/src/main/java/com/xtenzq/leetcode/MakeGood.java new file mode 100644 index 0000000..479b619 --- /dev/null +++ b/algorithms-and-data-structures/src/main/java/com/xtenzq/leetcode/MakeGood.java @@ -0,0 +1,28 @@ +package com.xtenzq.leetcode; + +import java.util.Stack; + +public class MakeGood { + + public static String makeGood(String s) { + if (s.length() == 1) { + return s; + } + Stack chars = new Stack<>(); + chars.push(s.charAt(0)); + for (int i = 1; i < s.length(); i++) { + if (!chars.empty() && Math.abs((int)s.charAt(i) - (int)chars.peek()) == 32) { + chars.pop(); + } else { + chars.push(s.charAt(i)); + } + } + + StringBuilder sb = new StringBuilder(); + for (char c : chars) { + sb.append(c); + } + return sb.toString(); + } + +} diff --git a/algorithms-and-data-structures/src/test/java/com/xtenzq/leetcode/MakeGoodTest.java b/algorithms-and-data-structures/src/test/java/com/xtenzq/leetcode/MakeGoodTest.java new file mode 100644 index 0000000..8ca13dc --- /dev/null +++ b/algorithms-and-data-structures/src/test/java/com/xtenzq/leetcode/MakeGoodTest.java @@ -0,0 +1,24 @@ +package com.xtenzq.leetcode; + +import org.junit.jupiter.api.Test; + +import static com.xtenzq.leetcode.MakeGood.makeGood; +import static org.junit.jupiter.api.Assertions.*; + +class MakeGoodTest { + + @Test + void makeGood_case1() { + assertEquals("leetcode", makeGood("leEeetcode")); + } + + @Test + void makeGood_case2() { + assertEquals("", makeGood("abBAcC")); + } + + @Test + void makeGood_case3() { + assertEquals("s", makeGood("s")); + } +} \ No newline at end of file