鱼C论坛

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

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

[复制链接]
发表于 2020-2-13 23:17:48 | 显示全部楼层
fan1993423 发表于 2020-2-13 23:15
这个删除前面两个B最后两个A,不就是A开头,B结束,中间有AB的字符串了吗?A...AB...B到底是什么意思

中间的省略号可以为零个A 或者零个B
也就是说AB也是可以的
还有全是A,或者全是B也是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 23:19:40 | 显示全部楼层
wanting-for 发表于 2020-2-13 23:17
中间的省略号可以为零个A 或者零个B
也就是说AB也是可以的
还有全是A,或者全是B也是可以的

是这个意思嘛? @zlzlt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 01:05:10 | 显示全部楼层
本帖最后由 kinkon 于 2020-2-14 16:27 编辑
  1. def w331(s):
  2.     a=b=c=0
  3.     for i in s:
  4.         if i == 'A':
  5.             a += 1
  6.             b -= 1
  7.             c=min(c,b)
  8.         else:
  9.             b += 1
  10.     return c+a
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-2-14 10:11:32 | 显示全部楼层
  1. t = input()
  2. count = []       #生成一一对应的列表count,j   count存放相同字母小段个数
  3. j = []           #j存放count中每个值对应的字母
  4. j.append (t[0])
  5. x = t[0]
  6. k = 0            #每段个数
  7. p = 0            #A总数
  8. for i in t:
  9.     if i == 'A':
  10.         p += 1
  11.     if i != x:
  12.         x = i
  13.         f = 0
  14.     else:
  15.         f = 1
  16.     if f == 0:
  17.         j.append (i)
  18.         count.append (k)
  19.         k = 1
  20.     else:
  21.         k += 1
  22. count.append (k)
  23. if j[0] == 'A':                 #最后A在count或j中的位置lastx
  24.     if len(count) % 2 == 0:
  25.         lastx = len(count) - 2
  26.     else:
  27.         lastx = len(count) - 1
  28. else:
  29.     if len(count) % 2 == 0:
  30.         lastx = len(count) - 1
  31.     else:
  32.         lastx = len(count) - 2
  33. c = 0
  34. sa = 0
  35. m = len(t)
  36. while p >= 0:                   #找到最小去掉的个数
  37.     sb = 0
  38.     if c > 0:
  39.         sa = sa + count[lastx+2]
  40.     b = lastx - 1
  41.     while b >= 0:
  42.         sb = sb + count[b]
  43.         b = b - 2
  44.     if sb+sa < m:
  45.         m = sb + sa
  46.     c += 1
  47.     p -= 1
  48.     lastx -= 2
  49. print(str(m))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 12:18:50 | 显示全部楼层
zltzlt 发表于 2020-2-13 18:10
解答错误

输入:

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

使用道具 举报

发表于 2020-2-14 13:09:17 From FishC Mobile | 显示全部楼层
塔大师的解法没看懂呢…每一行代码都懂,凑到一块为啥就能算出答案啊,这是个什么思路啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 13:23:41 | 显示全部楼层
  1. def fun(x):
  2.     a,b,c,d=len(x),0,0,x.count('A')
  3.     for i in x:
  4.         if i == 'A':
  5.             b += 1
  6.         if i == 'B':
  7.             c += 1
  8.         a = min(c + d - b,a)
  9.     return a
复制代码

评分

参与人数 2荣誉 -10 鱼币 -10 贡献 -3 收起 理由
zltzlt -5 -5 禁止抄袭!
fan1993423 -5 -5 -3

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-2-14 15:02:37 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2020-2-14 15:02:57 | 显示全部楼层
wanting-for 发表于 2020-2-13 20:29
看似简便,就是不知道效率怎们样,
这道题感觉方法还是比较明确的

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

使用道具 举报

 楼主| 发表于 2020-2-14 15:06:13 | 显示全部楼层
塔利班 发表于 2020-2-13 20:49
想了想count本来就死On,多跑了一圈

嗯,虽然速度提升不是很明显
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-14 15:07:00 | 显示全部楼层

解答错误

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

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

使用道具 举报

 楼主| 发表于 2020-2-14 15:09:13 | 显示全部楼层
genius_7321 发表于 2020-2-13 21:38
我的方法好像有点笨:

效率偏低,而且直接返回结果就行了哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-14 15:10:03 | 显示全部楼层
ouyunfu 发表于 2020-2-13 21:50
def f331(s:str)->int:
    res,tA,a,b,=min(s.count('A'),s.count('B')),s.count('A'),0,0
    for i in ...

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

使用道具 举报

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

解答错误

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

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

使用道具 举报

 楼主| 发表于 2020-2-14 15:12:10 | 显示全部楼层
fan1993423 发表于 2020-2-13 23:15
这个删除前面两个B最后两个A,不就是A开头,B结束,中间有AB的字符串了吗?A...AB...B到底是什么意思

字符串前面有若干个 A,后面有若干个 B,所有 A 必须在 B 的前面,可以没有 A 或 B
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-14 15:13:41 | 显示全部楼层
fan1993423 发表于 2020-2-13 23:19
是这个意思嘛? @zlzlt

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

使用道具 举报

 楼主| 发表于 2020-2-14 15:14:17 | 显示全部楼层
kinkon 发表于 2020-2-14 01:05
塔大师的解法,稍微调整,应该可以快一点。

或者这样,减少一行代码更直观些

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

使用道具 举报

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


输入以下数据出错

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

使用道具 举报

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

解答错误

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

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

使用道具 举报

发表于 2020-2-14 15:20:15 | 显示全部楼层
genius_7321 发表于 2020-2-14 13:09
塔大师的解法没看懂呢…每一行代码都懂,凑到一块为啥就能算出答案啊,这是个什么思路啊?

他的意思就是 计量一个countA,然后统计A,B的数量,B增加,等式会减少,但是是去最小值,所以不会影响最终结果,然后A增加的时候,虽然分数值会减少,但是A增加意味着countA的值也会增加,一增一减不会变化,所以前面A再多也没事,后面有A的话,因为是在循环中求的最小值,所以会降低。大致是这么个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 16:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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