Problem statement

https://leetcode.com/problems/string-without-aaa-or-bbb/

Solution

If we have more a than b, add aab, if we have more b than a, add bba. If they are equal, add ab. If we have something in the end, add it to the end.

Complexity

It is O(a + b) for time and space.

Code

class Solution:
    def strWithout3a3b(self, a, b):
        ans = []
        while a and b:
            if a > b:
                ans += ["a", "a", "b"]
                a, b = a-2, b-1
            elif a < b: 
                ans += ["b", "b", "a"]
                a, b = a-1, b-2
            else:
                ans += ["a", "b"]
                a, b = a-1, b-1
                
        return "".join(ans + ["a"] * a + ["b"] * b)