zoukankan      html  css  js  c++  java
  • 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;
    
    
    
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    Windows 系统里面的 hosts 文件
    JDK 安装目录中 native2ascii.exe 命令详解
    火狐浏览器安装 Modify Headers 插件
    java iterator
    HashSet HashTable HashMap的区别
    c# 序列化
    Oracle 同步
    QL Server 高可用性(一)AlwaysOn 技术
    sqlserver 日志传送
    oracle forall
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15431131.html
Copyright © 2011-2022 走看看