鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: zltzlt

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

[复制链接]
发表于 2020-2-14 16:17:24 | 显示全部楼层
本帖最后由 fan1993423 于 2020-2-14 16:52 编辑

我看大伙都在仿照塔利班的答案,或者改写,还是要自己写思路才行。我这个可能不算快,但是我完全自己想的。支持TJBEST的想法
def fun331(s):
    count_A,count_B=s.count('A'),s.count('B')
    s_inverse=s[::-1]
    index_A,index_B=s.find('A'),s_inverse.find('B')
    new_s=s[index_A+1:-index_B-1]
    t=len(new_s)
    first=len(s)-len(new_s)-2
    if len(set(new_s))==1 or not len(new_s):second=0
    else:
        for i in range(1,len(new_s)):
            second=min(new_s[:i].count('B')+new_s[i:].count('A'),t)
            t=second
    return min(count_A,count_B,first+second)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-14 16:18:07 | 显示全部楼层
fan1993423 发表于 2020-2-14 16:17
我看大伙都在仿照塔利班的答案,或者改写,还是要自己写思路才行。我这个可能不算快,但是我完全自己想的。 ...

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

使用道具 举报

发表于 2020-2-14 16:25:07 | 显示全部楼层

'BBAABAABBAAAAABAABBABABABABAABBAABABAAABABBBABBABAAAABAABAABBBBBABAABABBBBAAABBBAABAABAABBBABBABBBBABABBBABAAAAAABBBAABBBBABABBBAABABABAAAABBAABAAABAABABAAAAAABAAABBAAABBAAAABBAAABAAAAABBBABBABBBAABBBBAAAAAABBBABBABABBBBBABAABAAABBAABAABBBBBBAAABAABABAAAABAABAAABABBABBAAAABBABABBABABBBBABABBBAABAAAAABAABABABBBABAAABBAAABBBBBBBABAAAABAAAABBAAAABABAABBAABBBBBBAABBBBAABABBBBBAAABBAABBBBBAAAABABAABABBAAABAAABABABBAABAABBAAAABBBBAAAAAAABBABAABBBAABABBBBBABABAAAABAAAABAABBABABBBBAABAABBAABBBAAABBABABABBAABBAAAABABBBAABAAABBABABBBABABABABBAAABBBBAABAABAAABAAABAAABBBAABAAAAAAAAABBBBBBBAABABBABBABAABBAAAABABAAABAABAABBBBBABBBBBAABBBAABAABAABAAABAABBBBABAABBABABAAAABBBAAAABBBABABABBAABAABABABABAABBABABAABBBABBABAAABBABABBAABBAAABAABAABBBAAABBBBAAABBABBABBBBABBAABBABAAAAAABBBBAABBABBBBBBABBABAAABABBBAAAAAABBBAABAAABBAABAAABBAAABAABABBABABBBAAABBAAABABBAAAAABBAABBBBABABAAAABBBABBBAAAAABBAABBBBAABBBBBBAABABBBAABBAABAAABAABBAABBABABBBBABABAAAABABBAABABAABAABAABBAABBBABABBBABAAABAABBAABBBABAABBBBBABB'+'A'*100000000
你把这个带去试试,他们的都解不出来,我的还能解出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-14 16:28:46 | 显示全部楼层
fan1993423 发表于 2020-2-14 16:25
'BBAABAABBAAAAABAABBABABABABAABBAABABAAABABBBABBABAAAABAABAABBBBBABAABABBBBAAABBBAABAABAABBBABBABB ...

那你看看这个呢

testdata.zip (14.98 KB, 下载次数: 4)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 16:39:31 | 显示全部楼层
zltzlt 发表于 2020-2-14 16:28
那你看看这个呢

这种我这个就算不出来了,我看能不能优化吧,所以每个算法侧重点不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 16:41:11 | 显示全部楼层
zltzlt 发表于 2020-2-14 15:15
输入以下数据出错
t = input()
count = []       #生成一一对应的列表count,j   count存放相同字母小段个数
j = []           #j存放count中每个值对应的字母
j.append (t[0])
x = t[0]
k = 0            #每段个数
c = 1            #段数
for i in t:
    if i != x:
        x = i
        f = 0
    else:
        f = 1
    if f == 0:
        j.append (i)
        count.append (k)
        k = 1
        c += 1
    else:
        k += 1
count.append (k)
s = 0
ma = 0
a = 0
for i in range(0,c):
    if j[i] == 'A':
        a += count[i]
        s += count[i]
    else:
        s -= count[i]
    ma = max(ma,s)
m = a - ma
print(str(m))

评分

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

查看全部评分

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

使用道具 举报

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

使用道具 举报

发表于 2020-2-14 16:47:31 | 显示全部楼层

借鉴了楼上人的思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 16:54:47 | 显示全部楼层
稍微做了修改,不用列表添加的方式,改用了min函数,砍掉了一个if条件,不用引入re,速度会有所提高,但是对于版主给出的数据无能为力,因为是从切断点数数的方法,天然的没有他们巧方法来的快,但也算是我自己想的方法吧,不过对于某些特例我的还是很快的

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-2-14 16:55:47 | 显示全部楼层
fan1993423 发表于 2020-2-14 16:54
稍微做了修改,不用列表添加的方式,改用了min函数,砍掉了一个if条件,不用引入re,速度会有所提高,但是 ...

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

使用道具 举报

发表于 2020-2-18 21:13:29 | 显示全部楼层
@zltzlt 看一下3楼塔利班的答案和27楼这个人的答案。看来塔利班也中枪了啊

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-2-18 21:18:38 | 显示全部楼层
我在41楼也声明支持11楼TJBEST的说法,哪怕我们的思路不是很好,也许会超时,但是毕竟那是我们自己想出的思路。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-19 09:21:58 | 显示全部楼层
fan1993423 发表于 2020-2-18 21:13
@zltzlt 看一下3楼塔利班的答案和27楼这个人的答案。看来塔利班也中枪了啊

已经处理,感谢指出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-1 12:17:21 | 显示全部楼层
烧脑的很
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-30 16:40:46 | 显示全部楼层
def fun331(x):
    count = 0
    while True:
        for i in range(len(x)):
            if x[i] == 'A':
                if i >= x.count('A'):
                    count += x.count('A')
                    return count
                break
        for i in range(len(x)):
            if x[::-1][i] == 'B':
                if i >= x.count('B'):
                    count += x.count('B')
                    return count
                break
        for i in range(len(x)):
            if x[i] == 'A':
                count += i
                x = x[i+1:]
                break
        else:
            return count
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 00:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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