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;
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"
Note:
0 <= A <= 100
0 <= B <= 100
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();
}
}