鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[已解决]Python:每日一题 334

[复制链接]
发表于 2020-2-18 11:16:10 | 显示全部楼层
朴素做法,感觉的python的序列还是while更舒服
def fun334(string):
    M = len(string)
    if M < 3:
        return M
    
    maxSub = 1
    preCharacter = string[0]
    sublenth = 1
    count = 1
    
    index = 1
    while index < M:
        tempCharacter = string[index]
        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

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5 553 ms

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 14:04:35 From FishC Mobile | 显示全部楼层
用数学排列组合写的逻辑挺清晰,
        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[0]==max(l2) or l2[len(l2)-1] == max(l2):
                print(ma+2)
        else:
                print(ma+4)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 14:36:30 | 显示全部楼层
def func(str1):
    list1 = []
    list2 = []
    flag = False
    
    for i in range(len(str1)):
        for j in str1[i:]:
            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)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 16:01:31 | 显示全部楼层

解答错误

输入:
"abbaababbbbabaababbbabbbbaaabaababaaababbabbbabbaabbbaaabbabaaababaabaaaababbabababbbaabbbabbaabbbabbababbaaaaaaabaabbabbbaabbaaabbbabbbaabbbbabbaaabbaaabaaaaaaabbaabaaaaaabababaabaaaabbabbbababababaababbbabbbbbaaaabbbbbabababaaabbbbbabaaaaaaaaababbabaababbbbababbbbaabaaabaabbbbbbaaabbababbbabbabbbabababbbbbbaaababaabbababbbbababaabaabbabbabababaabbabbbbaaaabaabbababbbbbbbbbababaabbbabaabbaaabbbababbbaaaabbababaaabbbabababaabbbbbbabaaababbbbbbbaaaaabbaabbaabaabbbaabbabbbbbbbaabbaaaaaabbbbbbbbababbbabbabaaabaaabbababababaaaaaabaabbbbbbbaaabbbabbbbaabaababbabbabbbbbaabbabaaabbbababbbbabbbbaabaabaabaabaaaaababaaaabbbbbabaababbaababbbbbabbabaaaaabbbbbbbbbbbbaababaabaabbaabbaabaababbaaaababbbabbbabbbabaaaaaabaabbabbbbabababaaabbbaaaababbaabaaabbbbbaabaabbbabaaaaababbabbbbababaaabbbabbbbbbbaaaaaaabbabbbabbbabaababaaabbbbaaababbababaabbbbaabaaabbbbbbabbaabbbbababaabaaaaaabaaaabaabaaabbaabbaaaaaababaabbbbbaaaabbbaababbaaabababbbbababbaaabaaabbababbbbbbaaababaaabaaaaabbabbaaabbababaaabbbbabbabababaaaababaaaaabaaababbbbaaababbbaaabaaaaababbbbbaababbbbaaaabbabbbbbabbabbaabababaabbbbbbbbbabbaaabbaaaabbbbbababaaababaabbbbabbabababbbabbbbabaaabaabbbababbabbbabbbbabbaaaaaabbbbbbabababaabbbbbaaaaabbabbbaaabbaaabaaaaabbbbbbabbaaabababaababbabaabbabbbbaaaaabaaababbbbaaaabbbbabaabaaaaaabababaabbbabaabbababaabbbaaabbabbabababbaababaaabbaabbabbabbbaaabbaaabbbabaabbbabbbbbababbabbabbababbabbbbaaaabbbbababaaabbbaaaabbbbbbbaaababbaabbaabaaabbaababaaababbbabaabaaabbbbaaababababbabaabaabbbbabbbababbaaaababbabaabaaabbbbbbbbaababaaababbbbbbbabbabbbbabaabaaabbbbbabbaaabbaaababaaabaaabbabababbbabbaaababbababbbaaaabbaaaababbaabaabbbabbbaabbbbbabbbaaababbbaababababaabbbabbbabbbbbbbbbbbbbabaabaabbaaaabbbbaababbbbabbaaaaabbbbbbabaaabbbbbbbabbbbbaaabaabbaabbaababbaaaababbbbbbabbabbabbaabbbbabbaaaaaababaabbaabaabbbbbabbbaabbbbbabaaaababababababbbbaaabbabbbbabbbbbbbbbabbbaabbaababbabaaaabaaabbbbbaaabbbbbabbbabaabaabbbabbaaaabbbabbbbbabbbbbaaabbaaaaababbbbbbbaaaaabbbaaabaabaaabbbabbaaabababbbabaabbaabba"
输出:30
预期结果:29
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 20:47:55 | 显示全部楼层
本帖最后由 蒋博文 于 2020-2-18 20:55 编辑

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

评分

参与人数 2荣誉 -10 鱼币 -10 贡献 -3 收起 理由
zltzlt -5 -5
fan1993423 -5 -5 -3 令人作呕

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[3:]
    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))

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 20:56:54 | 显示全部楼层
蒋博文 发表于 2020-2-18 20:47
试试吧,应该能行

不要抄我的答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 20:59:04 | 显示全部楼层
@zltzlt 我都服了,明目大胆的抄袭答案。以后所有鱼油写的答案在公布之前都不显示吧,像以前冬雪雪冬那样。还有今天有题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 21:01:18 | 显示全部楼层
本帖最后由 fan1993423 于 2020-2-18 21:04 编辑

除了把fun334改成了fun,其他一字不改。一点不尊重别人的劳动成果。建议对这个人进行处置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 21:03:12 | 显示全部楼层
我已截图保存证据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

收到,第 333 题也是抄袭的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 21:05:53 | 显示全部楼层
zltzlt 发表于 2020-2-18 21:04
收到,第 333 题也是抄袭的吗?

打快了,就是这道题,你看答案和我的答案,除了定义函数那里 我的fun334,它的fun,其他一字不变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我抄作业,我还得故意抄错几道题呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 21:32:47 | 显示全部楼层
wanting-for 发表于 2020-2-18 21:25
我抄作业,我还得故意抄错几道题呢

它不是来骗鱼币,骗荣誉,骗贡献吗?我给它扣个够
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 00:18:22 | 显示全部楼层
本帖最后由 Vmtayvj 于 2020-2-19 00:27 编辑

好難阿~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 00:28:30 | 显示全部楼层
def AT(list1):  # Array traversal
    for each in range(len(list1)):
        if isinstance(list1[each], list):
            for each2 in AT(list1[each]):
                yield each2
            continue
        yield list1[each]


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[each]:
            bCand.append(aCand[each])
    if len(bCand) <= 0: return len(aCand[0])+2
    for each in range(len(bCand)):
        rbCand.append(bRegex.split(bCand[each]))
    rbCand = ATT(rbCand)
    rbCand.sort(reverse=True)
    print(rbCand)
    if aFlag:
        return len(rbCand[0])+4
    return len(rbCand[0])+2

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 22:22:41 From FishC Mobile | 显示全部楼层
zltzlt 发表于 2020-2-17 21:25
没有啊,一天一题(除了悬赏题)

这题没积分奖励和效率测试吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-20 14:20:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-20 14:20:45 | 显示全部楼层

会超时
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-15 11:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表