#+ANKI_DECK: study_deck_02 * TODO 1544. Make The String Great :easy: :PROPERTIES: :NEETCODE: [[file:../../roadmap.org::*1544. Make The String Great][1544. Make The String Great]] :END: Given a string ~s~ of lower and upper case English letters. A good string is a string which doesn't have *two adjacent characters* ~s[i]~ and ~s[i + 1]~ where: - ~0 <= i <= s.length - 2~ - ~s[i]~ is a lower-case letter and ~s[i + 1]~ is the same letter but in upper-case or *vice-versa*. To make the string good, you can choose *two adjacent* characters that make the string bad and remove them. You can keep doing this until the string becomes good. Return /the string/ after making it good. The answer is guaranteed to be unique under the given constraints. *Notice* that an empty string is also good. *Example 1:* #+begin_src Input: s = "leEeetcode" Output: "leetcode" Explanation: In the first step, either you choose i = 1 or i = 2, both will result "leEeetcode" to be reduced to "leetcode". #+end_src *Example 2:* #+begin_src Input: s = "abBAcC" Output: "" Explanation: We have many possible scenarios, and all lead to the same answer. For example: "abBAcC" --> "aAcC" --> "cC" --> "" "abBAcC" --> "abBA" --> "aA" --> "" #+end_src *Example 3:* #+begin_src Input: s = "s" Output: "s" #+end_src *Constraints:* - ~1 <= s.length <= 100~ - ~s~ contains only lower and upper case English letters. ** TODO Approach Write your approach here. ** TODO Python #+begin_src python class Solution: def makeGood(self, s: str) -> str: #+end_src ** TODO C++ #+begin_src cpp class Solution { public: string makeGood(string s) { } }; #+end_src