🏒

984. 不含 AAA 或 BBB 的字符串

💛
难度: 中等

题目

给定两个整数 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
对于给定的 AB,保证存在满足要求的 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

优化点