TJBEST 发表于 2020-2-18 11:16:10

朴素做法,感觉的python的序列还是while更舒服
def fun334(string):
    M = len(string)
    if M < 3:
      return M
   
    maxSub = 1
    preCharacter = string
    sublenth = 1
    count = 1
   
    index = 1
    while index < M:
      tempCharacter = string
      if tempCharacter != preCharacter:
            sublenth += 1
            count = 1
            preCharacter = tempCharacter
            index += 1
      else:
            if count == 1:
                sublenth += 1
                count = 2
                index += 1
            else:
                maxSub = sublenth if sublenth > maxSub else maxSub
                count = 1
                sublenth = 1
    else:
      maxSub = sublenth if sublenth > maxSub else maxSub
    return maxSub

拉了盏灯 发表于 2020-2-18 14:04:35

用数学排列组合写的逻辑挺清晰,

        l=string.split('aaa')
        l2=[]
        for i in l:
                l2.extend(i.split('bbb'))
        ma=len(max(l2))
        if len(l2)==1:
                print(ma)
        elif l2==max(l2) or l2 == max(l2):
                print(ma+2)
        else:
                print(ma+4)

一个账号 发表于 2020-2-18 14:36:30

def func(str1):
    list1 = []
    list2 = []
    flag = False
   
    for i in range(len(str1)):
      for j in str1:
            list1.append(j)
            temp = "".join(list1)
            if "aaa" in temp or "bbb" in temp:
                list2.append(len(list1)-1)
                flag = True
                break

      if not flag:
            list2.append(len(list1))
            
      list1.clear()
      flag = False
      
    return max(list2)

zltzlt 发表于 2020-2-18 16:01:31

塔利班 发表于 2020-2-17 21:59


解答错误

输入:"abbaababbbbabaababbbabbbbaaabaababaaababbabbbabbaabbbaaabbabaaababaabaaaababbabababbbaabbbabbaabbbabbababbaaaaaaabaabbabbbaabbaaabbbabbbaabbbbabbaaabbaaabaaaaaaabbaabaaaaaabababaabaaaabbabbbababababaababbbabbbbbaaaabbbbbabababaaabbbbbabaaaaaaaaababbabaababbbbababbbbaabaaabaabbbbbbaaabbababbbabbabbbabababbbbbbaaababaabbababbbbababaabaabbabbabababaabbabbbbaaaabaabbababbbbbbbbbababaabbbabaabbaaabbbababbbaaaabbababaaabbbabababaabbbbbbabaaababbbbbbbaaaaabbaabbaabaabbbaabbabbbbbbbaabbaaaaaabbbbbbbbababbbabbabaaabaaabbababababaaaaaabaabbbbbbbaaabbbabbbbaabaababbabbabbbbbaabbabaaabbbababbbbabbbbaabaabaabaabaaaaababaaaabbbbbabaababbaababbbbbabbabaaaaabbbbbbbbbbbbaababaabaabbaabbaabaababbaaaababbbabbbabbbabaaaaaabaabbabbbbabababaaabbbaaaababbaabaaabbbbbaabaabbbabaaaaababbabbbbababaaabbbabbbbbbbaaaaaaabbabbbabbbabaababaaabbbbaaababbababaabbbbaabaaabbbbbbabbaabbbbababaabaaaaaabaaaabaabaaabbaabbaaaaaababaabbbbbaaaabbbaababbaaabababbbbababbaaabaaabbababbbbbbaaababaaabaaaaabbabbaaabbababaaabbbbabbabababaaaababaaaaabaaababbbbaaababbbaaabaaaaababbbbbaababbbbaaaabbabbbbbabbabbaabababaabbbbbbbbbabbaaabbaaaabbbbbababaaababaabbbbabbabababbbabbbbabaaabaabbbababbabbbabbbbabbaaaaaabbbbbbabababaabbbbbaaaaabbabbbaaabbaaabaaaaabbbbbbabbaaabababaababbabaabbabbbbaaaaabaaababbbbaaaabbbbabaabaaaaaabababaabbbabaabbababaabbbaaabbabbabababbaababaaabbaabbabbabbbaaabbaaabbbabaabbbabbbbbababbabbabbababbabbbbaaaabbbbababaaabbbaaaabbbbbbbaaababbaabbaabaaabbaababaaababbbabaabaaabbbbaaababababbabaabaabbbbabbbababbaaaababbabaabaaabbbbbbbbaababaaababbbbbbbabbabbbbabaabaaabbbbbabbaaabbaaababaaabaaabbabababbbabbaaababbababbbaaaabbaaaababbaabaabbbabbbaabbbbbabbbaaababbbaababababaabbbabbbabbbbbbbbbbbbbabaabaabbaaaabbbbaababbbbabbaaaaabbbbbbabaaabbbbbbbabbbbbaaabaabbaabbaababbaaaababbbbbbabbabbabbaabbbbabbaaaaaababaabbaabaabbbbbabbbaabbbbbabaaaababababababbbbaaabbabbbbabbbbbbbbbabbbaabbaababbabaaaabaaabbbbbaaabbbbbabbbabaabaabbbabbaaaabbbabbbbbabbbbbaaabbaaaaababbbbbbbaaaaabbbaaabaabaaabbbabbaaabababbbabaabbaabba"
输出:30
预期结果:29

塔利班 发表于 2020-2-18 16:20:35

zltzlt 发表于 2020-2-18 16:01
解答错误

输入:


def f334(x):
    m,ca,cb,s=0,0,0,0
    for e in x:
      s+=1
      if e=='a':
            cb=0
            ca+=1
            if ca==3:
                m=max(s-1,m)
                ca-=1
                s=2
      else:
            ca=0
            cb+=1
            if cb==3:
                m=max(s-1,m)
                cb-=1
                s=2

    return max(s,m)

蒋博文 发表于 2020-2-18 20:47:55

本帖最后由 蒋博文 于 2020-2-18 20:55 编辑

试试吧,应该能行{:10_277:}def fun(s):
    flag,count,result=True,0,0
    for i in range(len(s)-2):
      if len(set(s))==2 and flag:
            count+=3
            flag=False
      elif len(set(s))==2 and not flag:
            count+=1
      elif len(set(s))==1:
            result=max(count,result)
            count,flag=0,True
    return max(count,result)

wcshds 发表于 2020-2-18 20:52:19

本帖最后由 wcshds 于 2020-2-18 21:18 编辑

看看 這個行不行


import re

def Test(content):
    if (content[:3] not in ['aaa', 'bbb']) and (content[-3:] not in ['aaa', 'bbb']):
      content = re.sub(r'a{3,}', 'aa@aa', content)
      content = re.sub(r'b{3,}', 'bb@bb', content)
    if content[:3] in ['aaa', 'bbb']:
      content = re.sub(r'a{3,}', 'aa@aa', content)
      content = re.sub(r'b{3,}', 'bb@bb', content)
      content = content
    if content[-3:] in ['aaa', 'bbb']:
      content = re.sub(r'a{3,}', 'aa@aa', content)
      content = re.sub(r'b{3,}', 'bb@bb', content)
      content = content[:-3]
    lista = content.split('@')
    return len(max(lista, key = len))

fan1993423 发表于 2020-2-18 20:56:54

蒋博文 发表于 2020-2-18 20:47
试试吧,应该能行

不要抄我的答案

fan1993423 发表于 2020-2-18 20:59:04

@zltzlt 我都服了,明目大胆的抄袭答案。以后所有鱼油写的答案在公布之前都不显示吧,像以前冬雪雪冬那样。还有今天有题吗?

fan1993423 发表于 2020-2-18 21:01:18

本帖最后由 fan1993423 于 2020-2-18 21:04 编辑

除了把fun334改成了fun,其他一字不改。一点不尊重别人的劳动成果。建议对这个人进行处置

fan1993423 发表于 2020-2-18 21:03:12

我已截图保存证据

zltzlt 发表于 2020-2-18 21:04:35

fan1993423 发表于 2020-2-18 21:01
除了把fun334改成了fun333,其他一字不改。一点不尊重别人的劳动成果。建议对这个人进行处置

收到,第 333 题也是抄袭的吗?

fan1993423 发表于 2020-2-18 21:05:53

zltzlt 发表于 2020-2-18 21:04
收到,第 333 题也是抄袭的吗?

打快了,就是这道题,你看答案和我的答案,除了定义函数那里 我的fun334,它的fun,其他一字不变

wanting-for 发表于 2020-2-18 21:25:05

fan1993423 发表于 2020-2-18 21:05
打快了,就是这道题,你看答案和我的答案,除了定义函数那里 我的fun334,它的fun,其他一字不变

我抄作业,我还得故意抄错几道题呢{:5_90:}

fan1993423 发表于 2020-2-18 21:32:47

wanting-for 发表于 2020-2-18 21:25
我抄作业,我还得故意抄错几道题呢

它不是来骗鱼币,骗荣誉,骗贡献吗?我给它扣个够

Vmtayvj 发表于 2020-2-19 00:18:22

本帖最后由 Vmtayvj 于 2020-2-19 00:27 编辑

好難阿~

Vmtayvj 发表于 2020-2-19 00:28:30

def AT(list1):# Array traversal
    for each in range(len(list1)):
      if isinstance(list1, list):
            for each2 in AT(list1):
                yield each2
            continue
      yield list1


def ATT(list1):
    r = []
    for each in AT(list1):
      r.append(each)
    return r

def func334(str1):
    import re

    if "aaa" not in str1 and "bbb" not in str1: return len(str1)
    aRegex = re.compile("a{3}")
    bRegex = re.compile("b{3}")
    aCand = aRegex.split(str1)
    bCand = []
    rbCand = []
    aFlag = "aaa" in str1
    aCand.sort(reverse=True)
    for each in range(len(aCand)):
      if "bbb" in aCand:
            bCand.append(aCand)
    if len(bCand) <= 0: return len(aCand)+2
    for each in range(len(bCand)):
      rbCand.append(bRegex.split(bCand))
    rbCand = ATT(rbCand)
    rbCand.sort(reverse=True)
    print(rbCand)
    if aFlag:
      return len(rbCand)+4
    return len(rbCand)+2

kinkon 发表于 2020-2-19 22:22:41

zltzlt 发表于 2020-2-17 21:25
没有啊,一天一题(除了悬赏题)

这题没积分奖励和效率测试吗?

zltzlt 发表于 2020-2-20 14:20:14

William4869 发表于 2020-2-17 22:26
试试

653 ms

zltzlt 发表于 2020-2-20 14:20:45

fan1993423 发表于 2020-2-17 22:33
在写个方法

会超时
页: 1 [2] 3
查看完整版本: Python:每日一题 334