984. 不含 AAA 或 BBB 的字符串

2021/10/20 23:16:01

本文主要是介绍984. 不含 AAA 或 BBB 的字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

a和b中,大的为p,小的为q

令k = p / (q + 1),当i % k == 0时,str += 小的,否则str += 大的,

当然要注意大的因为str加的次数多,所以会在某一次迭代中 <= 小的,但绝不会 < 小的 - 2,可以思考一下为什么

这时每次加一个小的加一个大的即可

class Solution {
public:
    string strWithout3a3b(int a, int b) {
        int p, q;
        char r, t;
        if(a > b)
        {
            p = a;
            r = 'a';
            q = b;
            t = 'b';
        }
        else
        {
            p = b;
            r = 'b';
            q = a;
            t = 'a';
        }
        string str = "";
        int k = ceil(p / (double)(q + 1));

        for(int i = 0; i < a + b; i++)
        {
            if(i > 0 && (i + 1) % (k + 1) == 0 && q != 0)
                str += t, q--;
            else if(p != 0)
                str += r, p--;

            if(p <= q)
            {
                while(p && q)
                {
                    str += t;
                    q--;
                    str += r;
                    p--;
                }
            }

            while(q == 0 && p)
            {
                str += r;
                p--;
            }
            while(p == 0 && q)
            {
                str += t;
                q--;
            }
        }
        return str;




    }
};

 



这篇关于984. 不含 AAA 或 BBB 的字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程