Medium
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,'aaa' does not occur in s, and'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 <= 100s exists for the given a and b.class Solution {
fun strWithout3a3b(a: Int, b: Int): String {
val first = if (a > b) "a" else "b"
val second = if (first == "a") "b" else "a"
var firstLen = a.coerceAtLeast(b)
var secondLen = a.coerceAtMost(b)
val ans = StringBuilder()
// Case 1 : A and B count are unequal.
while (firstLen > 0 && secondLen > 0 && firstLen != secondLen) {
ans.append(first)
ans.append(first)
firstLen = firstLen - 2
ans.append(second)
secondLen--
}
// Case 2: A and B count are equal
while (firstLen > 0 && secondLen > 0) {
ans.append(first)
ans.append(second)
firstLen--
secondLen--
}
// left over, just append
while (firstLen > 0) {
ans.append(first)
firstLen--
}
return ans.toString()
}
}