zoukankan      html  css  js  c++  java
  • 最长字串 限制重复长度

    A/B/C代表输入的字母a/b/c的个数,均为非负整数
    不能连续出现三个相同的字母
    求给出可以组成的字长字符串的一个示例

    def solution(A, B, C):
        d = {}
        ret = ''
        d['a'], d['b'], d['c'] = A, B, C
        count0 = 0
        while True:
            for k in d:
                if d[k] > 0:
                    d[k] -= 1
                    ret += k
                else:
                    count0 += 1
            if count0 >= 2:
                break
    
        remain = None
        for k in d:
            if d[k] > 0:
                remain = k
                break
    
        if remain is None:
            return ret
        # abc ---> abac
        replaceTarget = 'abc'.replace(remain, '')
        targetNum = ret.count(replaceTarget)
        replaceCount = min(targetNum, d[remain])
        ret = ret.replace(replaceTarget, replaceTarget[0] + remain + replaceTarget[1], replaceCount)
        d[remain] -= replaceCount
        if d[remain] < 1:
            return ret
    
        # abac ---> aabaac
    
        replaceTarget = remain
        # [1, 1, 12] 14 ccaccbcc 8
        targetNum = ret.replace(remain + remain, '').count(replaceTarget)
        replaceCount = min(targetNum, d[remain])
        ret = ret.replace(replaceTarget, replaceTarget + remain, replaceCount)
        d[remain] -= replaceCount
    
        # 0....n-1
        remainCount = d[remain]
        if ret[0] != remain:
            if remainCount == 1:
                ret = remain + ret
            elif remainCount >= 2:
                ret = remain + remain + ret
                remainCount -= 2
        if ret[-1] != remain:
            if remainCount == 1:
                ret += remain
            elif remainCount >= 2:
                ret += remain + remain
        return ret
    
    
    l = [[0, 1, 2], [2, 2, 2], [2, 3, 4], [2, 3, 5], [1, 3, 7], [12, 3, 0], [1, 3, 1], [1, 5, 1], [0, 0, 12], [1, 1, 12]]
    for i in l:
        A, B, C = i
        s = solution(A, B, C)
        print(i, sum(i), s, len(s))
    
    '''
    [0, 1, 2] 3 bcc 3
    [2, 2, 2] 6 abcabc 6
    [2, 3, 4] 9 abcabcbcc 9
    [2, 3, 5] 10 acbcabcbcc 10
    [1, 3, 7] 11 accbccbccbc 11
    [12, 3, 0] 15 aabaabaa 8
    [1, 3, 1] 5 abbcb 5
    [1, 5, 1] 7 babbcbb 7
    [0, 0, 12] 12 cc 2
    [1, 1, 12] 14 ccaccbcc 8
    '''
    

      

      

  • 相关阅读:
    小程序canvas生成海报-新旧接口
    vue网页小程序实现七牛云图片文件上传以及原生组件video显示不出问题
    【文化课】 一篇魔改英语理解
    python萌新笔记
    版本控制(Version control)
    开源许可证(License)
    agc004c
    python日期时间、时间戳互相转换
    拓展django-haystack全文检索的样式和搜索频率限制
    常用JS代码
  • 原文地址:https://www.cnblogs.com/rsapaper/p/11152182.html
Copyright © 2011-2022 走看看