String Without AAA or BBB

Given two integers A and B, return any string S such that:

 

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"
 

Note:

  1. 0 <= A <= 100
  2. 0 <= B <= 100
  3. It is guaranteed such an S exists for the given A and B.

Solution:

class Solution {
    public String strWithout3a3b(int A, int B) {
        StringBuilder sb = new StringBuilder();
        int a = A, b = B;
        while (true) {
            if (sb.length() == A + B) break;
            int len = sb.length();
            if (a > b) {
                if (len >= 2 && sb.charAt(len - 2) == 'a' && sb.charAt(len - 1) == 'a') {
                    sb.append('b');
                    b --;
                } else {
                    sb.append('a');
                    a --;
                }
            } else {
                if (len >= 2 && sb.charAt(len - 2) == 'b' && sb.charAt(len - 1) == 'b') {
                    sb.append('a');
                    a --;
                } else {
                    sb.append('b');
                    b --;
                }                
            }
        }
        return sb.toString();
    }
}