Problem
Given two integers a
and b
, return any string s
such that:
s
has lengtha + b
and contains exactlya
'a'
letters, and exactlyb
'b'
letters,The substring
'aaa'
does not occur ins
, andThe substring
'bbb'
does not occur ins
.
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 givena
andb
.
Solution
/**
* @param {number} a
* @param {number} b
* @return {string}
*/
var strWithout3a3b = function(a, b, isRevert) {
if (b > a) return strWithout3a3b(b, a, true);
var res = '';
while (a > 0 || b > 0) {
if (a > 0) {
var num = a > 2 ? 2 : 1;
res += (isRevert ? 'b' : 'a').repeat(num);
a -= num;
}
if (b > 0) {
var num = b > Math.ceil(a / 2) && b >= 2 ? 2 : 1;
res += (isRevert ? 'a' : 'b').repeat(num);
b -= num;
}
}
return res;
};
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).