难度: 中等
题目
给定两个整数 A 和 B,返回任意字符串 S,要求满足:
S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母;
子串 'aaa' 没有出现在 S 中;
子串 'bbb' 没有出现在 S 中。
示例 1:
输入:A = 1, B = 2
输出:"abb"
解释:"abb", "bab" 和 "bba" 都是正确答案。
示例 2:
输入:A = 4, B = 1
输出:"aabaa"
提示:
0 <= A <= 100
0 <= B <= 100
对于给定的 A 和 B,保证存在满足要求的 S。
思路
贪心算法
长度长的输出两次
题解
/**
* @param {number} a
* @param {number} b
* @return {string}
*/
var strWithout3a3b = function(a, b) {
let res = []
while (a > 0 || b > 0) {
if (a > b && a > 1 && b > 0) {
res.push('aa')
res.push('b')
a -= 2
b -= 1
} else if (b > a && b > 1 && a > 0) {
res.push('bb')
res.push('a')
b -= 2
a -= 1
} else {
if (a > 0) {
res.push('a')
a -= 1
}
if (b > 0) {
res.push('b')
b -= 1
}
}
}
return res.join('')
}
结果
执行用时:64 ms, 在所有 JavaScript 提交中击败了95.00%的用户
内存消耗:37.9 MB, 在所有 JavaScript 提交中击败了75.00%的用户
通过测试用例:103 / 103