0984-不含 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, b <= 100
- 对于给定的
a
和b
,保证存在满足要求的s
方法:贪心
思路
直观感觉,我们应该先选择当前所剩最多的待写字母写入字符串中。举一个例子,如果 A = 6, B = 2
,那么我们期望写出 'aabaabaa'
。进一步说,设当前所剩最多的待写字母为 x
,只有前两个已经写下的字母都是 x
的时候,下一个写入字符串中的字母才不应该选择它。
算法
我们定义 A, B
:待写的 'a'
与 'b'
的数量。
设当前还需要写入字符串的 'a'
与 'b'
中较多的那一个为 x
,如果我们已经连续写了两个 x
了,下一次我们应该写另一个字母。否则,我们应该继续写 x
。
1 | class Solution { |
1 | class Solution(object): |
复杂度分析
时间复杂度:O(A+B)。
空间复杂度:O(A+B)。
Comments