給定兩個(gè)整數(shù)?A?和?B,返回任意字符串 S,要求滿足:
S 的長(zhǎng)度為?A + B,且正好包含?A?個(gè) 'a'?字母與?B?個(gè) 'b'?字母;
子串?'aaa'?沒(méi)有出現(xiàn)在?S?中;
子串?'bbb' 沒(méi)有出現(xiàn)在?S?中。
示例 1:
輸入:A = 1, B = 2
輸出:"abb"
解釋:"abb", "bab" 和 "bba" 都是正確答案。
示例 2:
輸入:A = 4, B = 1
輸出:"aabaa"
提示:
0 <= A <= 100
0 <= B <= 100
對(duì)于給定的 A 和 B,保證存在滿足要求的 S。
解題思路:
1.當(dāng)max > 2min+2 時(shí)候此題無(wú)解;
2.假如a>b,應(yīng)該盡可能讓“aab”盡可能的多,反之a(chǎn)<b,應(yīng)該盡可能讓“bba”盡可能的多,
3.當(dāng)a=b時(shí),“ab”交替出現(xiàn)即可
代碼如下:
public static String strWithout3a3b2(int a, int b) {
? ? ? ? StringBuilder str = new StringBuilder();
? ? ? ? while (a > 0 && b >0){
? ? ? ? ? ? if( a > b){
? ? ? ? ? ? ? ? str.append("aab");
? ? ? ? ? ? ? ? a -= 2;
? ? ? ? ? ? ? ? b --;
? ? ? ? ? ? }else if( b > a){
? ? ? ? ? ? ? ? str.append("aab");
? ? ? ? ? ? ? ? a --;
? ? ? ? ? ? ? ? b -= 2;
? ? ? ? ? ? }else if(a == b){
? ? ? ? ? ? ? ? str.append("ab");
? ? ? ? ? ? ? ? a --;
? ? ? ? ? ? ? ? b --;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? while ( a > 0){
? ? ? ? ? ? str.append("a");
? ? ? ? ? ? a --;
? ? ? ? }
? ? ? ? while ( b > 0){
? ? ? ? ? ? str.append("b");
? ? ? ? ? ? b --;
? ? ? ? }
? ? ? ? return str.toString();
? ? }