Skip to content

984. String Without AAA or BBB

Difficulty Topics

Description

Given two integers a and b, return any string s such that:

  • s has length a + b and contains exactly a 'a' letters, and exactly b 'b' letters,
  • The substring 'aaa' does not occur in s, and
  • The substring 'bbb' does not occur in s.

 

Example 1:

Input: a = 1, b = 2
Output: "abb"
Explanation: "abb", "bab" and "bba" are all correct answers.

Example 2:

Input: a = 4, b = 1
Output: "aabaa"

 

Constraints:

  • 0 <= a, b <= 100
  • It is guaranteed such an s exists for the given a and b.

Solution

string-without-aaa-or-bbb.py
class Solution:
    def strWithout3a3b(self, a: int, b: int) -> str:
        res = ""


        while a > 0 and b > 0:
            if a > b:
                res += "a" * min(a, 2)
                res += "b"
                a -= min(a, 2)
                b -= 1
            elif a == b:
                if not res or res[-1] == "a":
                    res += "b"
                    b -= 1
                else:
                    res += "a"
                    a -= 1
            else:
                res += "b" * min(b, 2)
                res += "a"
                b -= min(b, 2)
                a -= 1

        if a > 0:
            res += "a" * a

        if b > 0:
            res += "b" * b

        return res