学习力扣: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。

解题思路:

1.当max > 2min+2 时候此题无解;

2.假如a>b,应该尽可能让“aab”尽可能的多,反之a<b,应该尽可能让“bba”尽可能的多,

3.当a=b时,“ab”交替出现即可

代码如下:

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();

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容