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
- 对于给定的 A 和 B,保证存在满足要求的 S。
| 解题思路:贪心思想 |
- 先选择当前字母数量多的字母;
- 如果当前字母已经出现两次的情况下,则换另一个字母。
class Solution {
public:
string strWithout3a3b(int A, int B) {
string res = "";
int a = 0 , b = 0 , n = A + B;
while(res.size() < n){
//a比b多,且a还没出现两次; a比b少,但b已经出现了两次,则依然选择a
if(A > B && a < 2 || A <= B && b == 2){
res += 'a';
A--;
a++;
b = 0;
}
//a比b少,且b还没出现两次; a比b多,但a已经出现了两次,则选择b
else{
res += 'b';
B--;
b++;
a = 0;
}
}
return res;
}
};
372

被折叠的 条评论
为什么被折叠?



