鱼C论坛

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

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

[复制链接]
发表于 2020-2-18 11:16:10 | 显示全部楼层
朴素做法,感觉的python的序列还是while更舒服
  1. def fun334(string):
  2.     M = len(string)
  3.     if M < 3:
  4.         return M
  5.    
  6.     maxSub = 1
  7.     preCharacter = string[0]
  8.     sublenth = 1
  9.     count = 1
  10.    
  11.     index = 1
  12.     while index < M:
  13.         tempCharacter = string[index]
  14.         if tempCharacter != preCharacter:
  15.             sublenth += 1
  16.             count = 1
  17.             preCharacter = tempCharacter
  18.             index += 1
  19.         else:
  20.             if count == 1:
  21.                 sublenth += 1
  22.                 count = 2
  23.                 index += 1
  24.             else:
  25.                 maxSub = sublenth if sublenth > maxSub else maxSub
  26.                 count = 1
  27.                 sublenth = 1
  28.     else:
  29.         maxSub = sublenth if sublenth > maxSub else maxSub
  30.     return maxSub
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-2-18 14:04:35 From FishC Mobile | 显示全部楼层
用数学排列组合写的逻辑挺清晰,

  1.         l=string.split('aaa')
  2.         l2=[]
  3.         for i in l:
  4.                 l2.extend(i.split('bbb'))
  5.         ma=len(max(l2))
  6.         if len(l2)==1:
  7.                 print(ma)
  8.         elif l2[0]==max(l2) or l2[len(l2)-1] == max(l2):
  9.                 print(ma+2)
  10.         else:
  11.                 print(ma+4)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-2-18 14:36:30 | 显示全部楼层
  1. def func(str1):
  2.     list1 = []
  3.     list2 = []
  4.     flag = False
  5.    
  6.     for i in range(len(str1)):
  7.         for j in str1[i:]:
  8.             list1.append(j)
  9.             temp = "".join(list1)
  10.             if "aaa" in temp or "bbb" in temp:
  11.                 list2.append(len(list1)-1)
  12.                 flag = True
  13.                 break

  14.         if not flag:
  15.             list2.append(len(list1))
  16.             
  17.         list1.clear()
  18.         flag = False
  19.         
  20.     return max(list2)
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

解答错误

输入:
  1. "abbaababbbbabaababbbabbbbaaabaababaaababbabbbabbaabbbaaabbabaaababaabaaaababbabababbbaabbbabbaabbbabbababbaaaaaaabaabbabbbaabbaaabbbabbbaabbbbabbaaabbaaabaaaaaaabbaabaaaaaabababaabaaaabbabbbababababaababbbabbbbbaaaabbbbbabababaaabbbbbabaaaaaaaaababbabaababbbbababbbbaabaaabaabbbbbbaaabbababbbabbabbbabababbbbbbaaababaabbababbbbababaabaabbabbabababaabbabbbbaaaabaabbababbbbbbbbbababaabbbabaabbaaabbbababbbaaaabbababaaabbbabababaabbbbbbabaaababbbbbbbaaaaabbaabbaabaabbbaabbabbbbbbbaabbaaaaaabbbbbbbbababbbabbabaaabaaabbababababaaaaaabaabbbbbbbaaabbbabbbbaabaababbabbabbbbbaabbabaaabbbababbbbabbbbaabaabaabaabaaaaababaaaabbbbbabaababbaababbbbbabbabaaaaabbbbbbbbbbbbaababaabaabbaabbaabaababbaaaababbbabbbabbbabaaaaaabaabbabbbbabababaaabbbaaaababbaabaaabbbbbaabaabbbabaaaaababbabbbbababaaabbbabbbbbbbaaaaaaabbabbbabbbabaababaaabbbbaaababbababaabbbbaabaaabbbbbbabbaabbbbababaabaaaaaabaaaabaabaaabbaabbaaaaaababaabbbbbaaaabbbaababbaaabababbbbababbaaabaaabbababbbbbbaaababaaabaaaaabbabbaaabbababaaabbbbabbabababaaaababaaaaabaaababbbbaaababbbaaabaaaaababbbbbaababbbbaaaabbabbbbbabbabbaabababaabbbbbbbbbabbaaabbaaaabbbbbababaaababaabbbbabbabababbbabbbbabaaabaabbbababbabbbabbbbabbaaaaaabbbbbbabababaabbbbbaaaaabbabbbaaabbaaabaaaaabbbbbbabbaaabababaababbabaabbabbbbaaaaabaaababbbbaaaabbbbabaabaaaaaabababaabbbabaabbababaabbbaaabbabbabababbaababaaabbaabbabbabbbaaabbaaabbbabaabbbabbbbbababbabbabbababbabbbbaaaabbbbababaaabbbaaaabbbbbbbaaababbaabbaabaaabbaababaaababbbabaabaaabbbbaaababababbabaabaabbbbabbbababbaaaababbabaabaaabbbbbbbbaababaaababbbbbbbabbabbbbabaabaaabbbbbabbaaabbaaababaaabaaabbabababbbabbaaababbababbbaaaabbaaaababbaabaabbbabbbaabbbbbabbbaaababbbaababababaabbbabbbabbbbbbbbbbbbbabaabaabbaaaabbbbaababbbbabbaaaaabbbbbbabaaabbbbbbbabbbbbaaabaabbaabbaababbaaaababbbbbbabbabbabbaabbbbabbaaaaaababaabbaabaabbbbbabbbaabbbbbabaaaababababababbbbaaabbabbbbabbbbbbbbbabbbaabbaababbabaaaabaaabbbbbaaabbbbbabbbabaabaabbbabbaaaabbbabbbbbabbbbbaaabbaaaaababbbbbbbaaaaabbbaaabaabaaabbbabbaaabababbbabaabbaabba"
复制代码

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

使用道具 举报

发表于 2020-2-18 16:20:35 | 显示全部楼层
zltzlt 发表于 2020-2-18 16:01
解答错误

输入:
  1. def f334(x):
  2.     m,ca,cb,s=0,0,0,0
  3.     for e in x:
  4.         s+=1
  5.         if e=='a':
  6.             cb=0
  7.             ca+=1
  8.             if ca==3:
  9.                 m=max(s-1,m)
  10.                 ca-=1
  11.                 s=2
  12.         else:
  13.             ca=0
  14.             cb+=1
  15.             if cb==3:
  16.                 m=max(s-1,m)
  17.                 cb-=1
  18.                 s=2

  19.     return max(s,m)
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

试试吧,应该能行
  1. def fun(s):
  2.     flag,count,result=True,0,0
  3.     for i in range(len(s)-2):
  4.         if len(set(s[i:i+3]))==2 and flag:
  5.             count+=3
  6.             flag=False
  7.         elif len(set(s[i:i+3]))==2 and not flag:
  8.             count+=1
  9.         elif len(set(s[i:i+3]))==1:
  10.             result=max(count,result)
  11.             count,flag=0,True
  12.     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 编辑

看看 這個行不行


  1. import re

  2. def Test(content):
  3.     if (content[:3] not in ['aaa', 'bbb']) and (content[-3:] not in ['aaa', 'bbb']):
  4.         content = re.sub(r'a{3,}', 'aa@aa', content)
  5.         content = re.sub(r'b{3,}', 'bb@bb', content)
  6.     if content[:3] in ['aaa', 'bbb']:
  7.         content = re.sub(r'a{3,}', 'aa@aa', content)
  8.         content = re.sub(r'b{3,}', 'bb@bb', content)
  9.         content = content[3:]
  10.     if content[-3:] in ['aaa', 'bbb']:
  11.         content = re.sub(r'a{3,}', 'aa@aa', content)
  12.         content = re.sub(r'b{3,}', 'bb@bb', content)
  13.         content = content[:-3]
  14.     lista = content.split('@')
  15.     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 | 显示全部楼层
  1. def AT(list1):  # Array traversal
  2.     for each in range(len(list1)):
  3.         if isinstance(list1[each], list):
  4.             for each2 in AT(list1[each]):
  5.                 yield each2
  6.             continue
  7.         yield list1[each]


  8. def ATT(list1):
  9.     r = []
  10.     for each in AT(list1):
  11.         r.append(each)
  12.     return r

  13. def func334(str1):
  14.     import re

  15.     if "aaa" not in str1 and "bbb" not in str1: return len(str1)
  16.     aRegex = re.compile("a{3}")
  17.     bRegex = re.compile("b{3}")
  18.     aCand = aRegex.split(str1)
  19.     bCand = []
  20.     rbCand = []
  21.     aFlag = "aaa" in str1
  22.     aCand.sort(reverse=True)
  23.     for each in range(len(aCand)):
  24.         if "bbb" in aCand[each]:
  25.             bCand.append(aCand[each])
  26.     if len(bCand) <= 0: return len(aCand[0])+2
  27.     for each in range(len(bCand)):
  28.         rbCand.append(bRegex.split(bCand[each]))
  29.     rbCand = ATT(rbCand)
  30.     rbCand.sort(reverse=True)
  31.     print(rbCand)
  32.     if aFlag:
  33.         return len(rbCand[0])+4
  34.     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-5-1 09:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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