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的话,因为是在循环中求的最小值,所以会降低。大致是这么个意思