给定两个整数 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
贪心
class Solution {
public:
string strWithout3a3b(int a, int b) {
string ans = "";
while(a > 0 && b > 0){
if(a > b){
ans += "aab";
a -= 2;
b--;
}
else if(a == b){
ans += "ab";
a--;
b--;
}
else{
ans += "bba";
a--;
b -= 2;
}
}
while(a > 0){
ans += "a";
a--;
}
while(b > 0){
ans += "b";
b--;
}
return ans;
}
};
谁多用谁,定义一个字符串ans,当a和b都大于0的时候,如果a的数量比b的数量多,ans就加上aab,如果b数量多,ans就加入bba,如果相同,就推入ab。并且都在更新ans后,更新a和b可使用的次数。当a或者b有一者为0的时候,那么接下来的字符就都是a或者都是b。