列表

详情


984. 不含 AAA 或 BBB 的字符串

给定两个整数 a 和 b ,返回 任意 字符串 s ,要求满足:

 

示例 1:

输入:a = 1, b = 2
输出:"abb"
解释:"abb", "bab" 和 "bba" 都是正确答案。

示例 2:

输入:a = 4, b = 1
输出:"aabaa"

 

提示:

​​​

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: string strWithout3a3b(int a, int b) { } };

golang 解法, 执行用时: 4 ms, 内存消耗: 1.9 MB, 提交时间: 2023-09-23 00:45:19

func strWithout3a3b(a int, b int) string {
    var builder strings.Builder
    for a > 0 || b > 0 {
        if a > b {
            // a多,a每次多消耗一个
            if a > 0 {
                builder.WriteString("a")
                a--
            }
            if a > 0 {
                builder.WriteString("a")
                a--
            }
            if b > 0 {
                builder.WriteString("b")
                b--
            }
        }else if a < b {
            // b多,b每次多消耗一个
            if b > 0 {
                builder.WriteString("b")
                b--
            }
            if b > 0 {
                builder.WriteString("b")
                b--
            }
            if a > 0 {
                builder.WriteString("a")
                a--
            }
        }else {
            // 同样多,消耗速率相同
            if a > 0 {
                builder.WriteString("ab")
                a--
                b--
            }
        }
    } 
    return builder.String()
}

cpp 解法, 执行用时: 4 ms, 内存消耗: 7.1 MB, 提交时间: 2023-09-23 00:44:30

class Solution {
public:
    string strWithout3a3b(int A, int B) {
        if(B==0) return string(A,'a');
        if(A==0) return string(B,'b');
        if(A==B) return "ab"+strWithout3a3b(A-1,B-1);
        return A>B?"aab"+strWithout3a3b(A-2,B-1):"bba"+strWithout3a3b(A-1,B-2);
    }
};

python3 解法, 执行用时: 44 ms, 内存消耗: 15.8 MB, 提交时间: 2023-09-23 00:43:56

class Solution:
    def strWithout3a3b(self, A: int, B: int) -> str:
        ans = []

        while A or B:
            if len(ans) >= 2 and ans[-1] == ans[-2]:
                writeA = ans[-1] == 'b'
            else:
                writeA = A >= B

            if writeA:
                A -= 1
                ans.append('a')
            else:
                B -= 1
                ans.append('b')

        return "".join(ans)

java 解法, 执行用时: 1 ms, 内存消耗: 38.7 MB, 提交时间: 2023-09-23 00:43:21

class Solution {
    public String strWithout3a3b(int A, int B) {
        StringBuilder ans = new StringBuilder();

        while (A > 0 || B > 0) {
            boolean writeA = false;
            int L = ans.length();
            if (L >= 2 && ans.charAt(L-1) == ans.charAt(L-2)) {
                if (ans.charAt(L-1) == 'b')
                    writeA = true;
            } else {
                if (A >= B)
                    writeA = true;
            }

            if (writeA) {
                A--;
                ans.append('a');
            } else {
                B--;
                ans.append('b');
            }
        }

        return ans.toString();
    }
}

上一题