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