wanting-for 发表于 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也是可以的

fan1993423 发表于 2020-2-13 23:19:40

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

是这个意思嘛? @zlzlt

kinkon 发表于 2020-2-14 01:05:10

本帖最后由 kinkon 于 2020-2-14 16:27 编辑

def w331(s):
    a=b=c=0
    for i in s:
      if i == 'A':
            a += 1
            b -= 1
            c=min(c,b)
      else:
            b += 1
    return c+a

有理由相信 发表于 2020-2-14 10:11:32

t = input()
count = []       #生成一一对应的列表count,j   count存放相同字母小段个数
j = []         #j存放count中每个值对应的字母
j.append (t)
x = t
k = 0            #每段个数
p = 0            #A总数
for i in t:
    if i == 'A':
      p += 1
    if i != x:
      x = i
      f = 0
    else:
      f = 1
    if f == 0:
      j.append (i)
      count.append (k)
      k = 1
    else:
      k += 1
count.append (k)
if j == 'A':               #最后A在count或j中的位置lastx
    if len(count) % 2 == 0:
      lastx = len(count) - 2
    else:
      lastx = len(count) - 1
else:
    if len(count) % 2 == 0:
      lastx = len(count) - 1
    else:
      lastx = len(count) - 2
c = 0
sa = 0
m = len(t)
while p >= 0:                   #找到最小去掉的个数
    sb = 0
    if c > 0:
      sa = sa + count
    b = lastx - 1
    while b >= 0:
      sb = sb + count
      b = b - 2
    if sb+sa < m:
      m = sb + sa
    c += 1
    p -= 1
    lastx -= 2
print(str(m))

AINIDEREN 发表于 2020-2-14 12:18:50

zltzlt 发表于 2020-2-13 18:10
解答错误

输入:


给我绕懵了

genius_7321 发表于 2020-2-14 13:09:17

塔大师的解法没看懂呢…每一行代码都懂,凑到一块为啥就能算出答案啊,这是个什么思路啊?

蒋博文 发表于 2020-2-14 13:23:41

def fun(x):
    a,b,c,d=len(x),0,0,x.count('A')
    for i in x:
      if i == 'A':
            b += 1
      if i == 'B':
            c += 1
      a = min(c + d - b,a)
    return a

zltzlt 发表于 2020-2-14 15:02:37

TJBEST 发表于 2020-2-13 20:17
还超时吗?

还会

zltzlt 发表于 2020-2-14 15:02:57

wanting-for 发表于 2020-2-13 20:29
看似简便,就是不知道效率怎们样,
这道题感觉方法还是比较明确的

502 ms

zltzlt 发表于 2020-2-14 15:06:13

塔利班 发表于 2020-2-13 20:49
想了想count本来就死On,多跑了一圈

嗯,虽然速度提升不是很明显

zltzlt 发表于 2020-2-14 15:07:00

阴阳神万物主 发表于 2020-2-13 21:23
不晓得有没有错漏。

解答错误

输入:"BBAABAABBAAAAABAABBABABABABAABBAABABAAABABBBABBABAAAABAABAABBBBBABAABABBBBAAABBBAABAABAABBBABBABBBBABABBBABAAAAAABBBAABBBBABABBBAABABABAAAABBAABAAABAABABAAAAAABAAABBAAABBAAAABBAAABAAAAABBBABBABBBAABBBBAAAAAABBBABBABABBBBBABAABAAABBAABAABBBBBBAAABAABABAAAABAABAAABABBABBAAAABBABABBABABBBBABABBBAABAAAAABAABABABBBABAAABBAAABBBBBBBABAAAABAAAABBAAAABABAABBAABBBBBBAABBBBAABABBBBBAAABBAABBBBBAAAABABAABABBAAABAAABABABBAABAABBAAAABBBBAAAAAAABBABAABBBAABABBBBBABABAAAABAAAABAABBABABBBBAABAABBAABBBAAABBABABABBAABBAAAABABBBAABAAABBABABBBABABABABBAAABBBBAABAABAAABAAABAAABBBAABAAAAAAAAABBBBBBBAABABBABBABAABBAAAABABAAABAABAABBBBBABBBBBAABBBAABAABAABAAABAABBBBABAABBABABAAAABBBAAAABBBABABABBAABAABABABABAABBABABAABBBABBABAAABBABABBAABBAAABAABAABBBAAABBBBAAABBABBABBBBABBAABBABAAAAAABBBBAABBABBBBBBABBABAAABABBBAAAAAABBBAABAAABBAABAAABBAAABAABABBABABBBAAABBAAABABBAAAAABBAABBBBABABAAAABBBABBBAAAAABBAABBBBAABBBBBBAABABBBAABBAABAAABAABBAABBABABBBBABABAAAABABBAABABAABAABAABBAABBBABABBBABAAABAABBAABBBABAABBBBBABB"
输出:485
预期结果:477

zltzlt 发表于 2020-2-14 15:09:13

genius_7321 发表于 2020-2-13 21:38
我的方法好像有点笨:

效率偏低,而且直接返回结果就行了哦

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

zltzlt 发表于 2020-2-14 15:11:11

yeyu0142 发表于 2020-2-13 22:22


解答错误

输入:"BBAABAABBAAAAABAABBABABABABAABBAABABAAABABBBABBABAAAABAABAABBBBBABAABABBBBAAABBBAABAABAABBBABBABBBBABABBBABAAAAAABBBAABBBBABABBBAABABABAAAABBAABAAABAABABAAAAAABAAABBAAABBAAAABBAAABAAAAABBBABBABBBAABBBBAAAAAABBBABBABABBBBBABAABAAABBAABAABBBBBBAAABAABABAAAABAABAAABABBABBAAAABBABABBABABBBBABABBBAABAAAAABAABABABBBABAAABBAAABBBBBBBABAAAABAAAABBAAAABABAABBAABBBBBBAABBBBAABABBBBBAAABBAABBBBBAAAABABAABABBAAABAAABABABBAABAABBAAAABBBBAAAAAAABBABAABBBAABABBBBBABABAAAABAAAABAABBABABBBBAABAABBAABBBAAABBABABABBAABBAAAABABBBAABAAABBABABBBABABABABBAAABBBBAABAABAAABAAABAAABBBAABAAAAAAAAABBBBBBBAABABBABBABAABBAAAABABAAABAABAABBBBBABBBBBAABBBAABAABAABAAABAABBBBABAABBABABAAAABBBAAAABBBABABABBAABAABABABABAABBABABAABBBABBABAAABBABABBAABBAAABAABAABBBAAABBBBAAABBABBABBBBABBAABBABAAAAAABBBBAABBABBBBBBABBABAAABABBBAAAAAABBBAABAAABBAABAAABBAAABAABABBABABBBAAABBAAABABBAAAAABBAABBBBABABAAAABBBABBBAAAAABBAABBBBAABBBBBBAABABBBAABBAABAAABAABBAABBABABBBBABABAAAABABBAABABAABAABAABBAABBBABABBBABAAABAABBAABBBABAABBBBBABB"
输出:487
预期结果:477

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

zltzlt 发表于 2020-2-14 15:13:41

fan1993423 发表于 2020-2-13 23:19
是这个意思嘛? @zlzlt

zltzlt 发表于 2020-2-14 15:14:17

kinkon 发表于 2020-2-14 01:05
塔大师的解法,稍微调整,应该可以快一点。

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

可以,251 ms

zltzlt 发表于 2020-2-14 15:15:44

有理由相信 发表于 2020-2-14 10:11


输入以下数据出错

"BBAABAABBAAAAABAABBABABABABAABBAABABAAABABBBABBABAAAABAABAABBBBBABAABABBBBAAABBBAABAABAABBBABBABBBBABABBBABAAAAAABBBAABBBBABABBBAABABABAAAABBAABAAABAABABAAAAAABAAABBAAABBAAAABBAAABAAAAABBBABBABBBAABBBBAAAAAABBBABBABABBBBBABAABAAABBAABAABBBBBBAAABAABABAAAABAABAAABABBABBAAAABBABABBABABBBBABABBBAABAAAAABAABABABBBABAAABBAAABBBBBBBABAAAABAAAABBAAAABABAABBAABBBBBBAABBBBAABABBBBBAAABBAABBBBBAAAABABAABABBAAABAAABABABBAABAABBAAAABBBBAAAAAAABBABAABBBAABABBBBBABABAAAABAAAABAABBABABBBBAABAABBAABBBAAABBABABABBAABBAAAABABBBAABAAABBABABBBABABABABBAAABBBBAABAABAAABAAABAAABBBAABAAAAAAAAABBBBBBBAABABBABBABAABBAAAABABAAABAABAABBBBBABBBBBAABBBAABAABAABAAABAABBBBABAABBABABAAAABBBAAAABBBABABABBAABAABABABABAABBABABAABBBABBABAAABBABABBAABBAAABAABAABBBAAABBBBAAABBABBABBBBABBAABBABAAAAAABBBBAABBABBBBBBABBABAAABABBBAAAAAABBBAABAAABBAABAAABBAAABAABABBABABBBAAABBAAABABBAAAAABBAABBBBABABAAAABBBABBBAAAAABBAABBBBAABBBBBBAABABBBAABBAABAAABAABBAABBABABBBBABABAAAABABBAABABAABAABAABBAABBBABABBBABAAABAABBAABBBABAABBBBBABB"

zltzlt 发表于 2020-2-14 15:16:45

蒋博文 发表于 2020-2-14 13:23


解答错误

输入:"BBABABBBABABABBBABABABAABBBBABAABBBBABABBBBABBAABBBABBBBABBABAAABBBABAABAAAAAABABAABABBAABBBABBABAAAAAABBBBAAAAAAABBBBAABAABAABABABAABBAAABBAABBBBABBBBAAAABABBBBBBABBBBBAABAAAAAABABABBAABBABBABAABABABABABABBAAABBBBBBBBABBABABBABBBBBBBABBBBAABBBAABBAABBABAAABABBAAAAAAAABBAAABAAABBAAABBABBBAAABBBBBABABBABBBBBABBBBBAAAAAABBAABABAAABABBAAAABBBBBAAAAAABBAAABAABAABBABBBBAABABBAABAAAAAAAAABAABBBBABBBBBAABABABBBABBAABBBAAAABABABBBABAABBBBABAABABAAABBABBBBBABBBBBABBBAABABBAABBBBAABABAABBBAABABBBAAAABAAAABBBAAABAABAABAAAAAAABBBABABBBBABBABBBBABAABABBABABBBABBABBAAAABAABBBBABAABABBBABBBAABBBBBBBBBABAAAABAAAAAABABAABAABBAABAAAAAABBBBBBAABBBBBAAAAAAAABBAAAABAAABBAABAABAABAAAABAAAAABABBAABAABAABAAAABABABABBAABBBAABAAABBABABAAABBBBBABBBAABBBABBBABBBABABBBBBAAAABAABBBBBAABABBAABBABBABBBABBBABBBBABAABBAAAAABBAAAABABBABBBBBAABBBBBAABBBBBABBBABBBBABABAAABBABABAAAAAABABAABBABBABABAABBBBABABBAAAABBBABABBBBABBBAAABAAAAABAAABBABBBBAAAABBBBABBBBBBAABABBBBAABBABAABBAABBBABAAAABABBBAAAABAABABBABBBBBAABBBBABBBAA"
输出:476
预期结果:475

fan1993423 发表于 2020-2-14 15:20:15

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

他的意思就是 计量一个countA,然后统计A,B的数量,B增加,等式会减少,但是是去最小值,所以不会影响最终结果,然后A增加的时候,虽然分数值会减少,但是A增加意味着countA的值也会增加,一增一减不会变化,所以前面A再多也没事,后面有A的话,因为是在循环中求的最小值,所以会降低。大致是这么个意思
页: 1 [2] 3
查看完整版本: Python:每日一题 331