Leetcode 984.不含 AAA 或 BBB 的字符串
1 题目描述(Leetcode题目链接)
给定两个整数 A 和 B,返回任意字符串 S,要求满足:
- S 的长度为 A + B,且正好包含 A 个 ‘a’ 字母与 B 个 ‘b’ 字母;
- 子串 ‘aaa’ 没有出现在 S 中;
- 子串 ‘bbb’ 没有出现在 S 中。
输入:A = 1, B = 2
输出:"abb"
解释:"abb", "bab" 和 "bba" 都是正确答案。
输入:A = 4, B = 1
输出:"aabaa"
提示:
- 0 <= A <= 100
- 0 <= B <= 100
- 对于给定的 A 和 B,保证存在满足要求的 S。
2 题解
根据A和B的大小关系,尽量凑出aab或bba的形式,不够的拿ab或ba来凑。
class Solution:
def strWithout3a3b(self, A: int, B: int) -> str:
if A >= B*2:
return "aab"*B + "a"*(A-2*B)
if B >= A*2:
return "bba"*A + "b"*(B-2*A)
if A == B:
return "ab"*A
if A > B:
return "aab"*(A-B) + "ab"*(2*B-A)
if B > A:
return "bba"*(B-A) + "ba"*(2*A-B)