鱼C论坛

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

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

[复制链接]
发表于 2020-4-5 14:55:52 | 显示全部楼层
import re

def q368(s,words):
    count = 0
    for each in words:
        if len(each) <= len(s):
            new_words = ''
            for word in each:
                new_words += (word + '\w*')
            if re.match(new_words, s):
                count += 1

    return count

if __name__ == '__main__':                
    s = 'abcde'
    words = ['a', 'bb', 'acd', 'ace']
    print(q368(s,words))

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-5 17:53:43 | 显示全部楼层
我默认是找有顺序的子字符串
def fun368(s,words):
    if not s:return 0
    result=0
    d=s[:]
    for word in words:
        for alpha in word:
            index=s.find(alpha)
            if index==-1:
                s=d
                break
            else:
                if word.find(alpha)==len(word)-1 and s.find(alpha)!=-1:
                    result+=1
                    s=d
                    break
                elif word.find(alpha)==len(word)-1 and s.find(alpha)==-1:
                    s=d
                    break
                s=s[index+1:]
    return result

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-5 19:20:17 | 显示全部楼层
s = "abcde"
words = ["a", "bb", "acd", "ace"]

def fun368(s, words):
        n = 0
        for word in words:
                temp = []
                each = 0
                sss = ''
                while each <=len(s)-1:
                        if s[each] in word:
                                temp.append(s[each])
                        each += 1
                for i in range(len(temp)):
                        sss += temp[i]
                if sss == word:
                        n += 1
        return n
       
print(fun368(s,words))

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-5 23:13:52 | 显示全部楼层
@zltzlt 这个子串有顺序要求吗?就比如acd是不是abcd的子串?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 23:15:02 | 显示全部楼层
也就是说,这个字串是连续的还是不连续的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 07:58:57 | 显示全部楼层
蒋博文 发表于 2020-4-5 23:15
也就是说,这个字串是连续的还是不连续的?

可以是不连续的,但是有顺序要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 10:52:01 | 显示全部楼层
zltzlt 发表于 2020-4-6 07:58
可以是不连续的,但是有顺序要求

也就是说acd是不可以改为adc的对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 10:52:58 | 显示全部楼层
def subfind(s,words):
    flag=0
    count=0
    for i in words:
        k=s
        for j in range(0,len(i)):
            if(k.find(i[j])==-1):
                flag=1
                break
            else:
                k=k.replace(i[j],"")
        if(flag==0):
            count+=1
        flag=0
    return count

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-4-6 10:58:42 | 显示全部楼层
fan1993423 发表于 2020-4-4 23:41
adc是不是acde的子序列

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

使用道具 举报

 楼主| 发表于 2020-4-6 12:53:38 | 显示全部楼层
蒋博文 发表于 2020-4-6 10:52
也就是说acd是不可以改为adc的对吗?

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

使用道具 举报

 楼主| 发表于 2020-4-7 13:21:57 | 显示全部楼层
March2615 发表于 2020-4-4 20:38
s里面是可以重复的?
比如输入:s=“abcdea”, words = ["cda"]
这时输出是1?

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

使用道具 举报

 楼主| 发表于 2020-4-7 13:25:40 | 显示全部楼层

解答错误

输入:
s = "dsahjpjauf", words = ['ahjpjau', 'ja', 'ahbwzgqnuk', 'tnmlanowax']
输出:1
预期结果:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 13:26:09 | 显示全部楼层
TJBEST 发表于 2020-4-4 20:41
先来一个效率低的

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

使用道具 举报

 楼主| 发表于 2020-4-7 13:26:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 13:28:01 | 显示全部楼层

解答错误

输入:
s = "dsahjpjauf", words = ['ahjpjau', 'ja', 'ahbwzgqnuk', 'tnmlanowax']
输出:1
预期结果:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 13:30:35 | 显示全部楼层
kinkon 发表于 2020-4-4 21:20
看例子感觉有顺序要求啊

再来一个,试试哪个快

第一个解答错误

输入:
s = "rwpddkvbnnuglnagtvamxkqtwhqgwbqgfbvgkwyuqkdwhzudsxvjubjgloeofnpjqlkdsqvruvabjrikfwronbrdyyjnakstqjac"
words = ['wpddkvbnn', 'lnagtva', 'kvbnnuglnagtvamxkqtwhqgwbqgfbvgkwyuqkdwhzudsxvju', 'rwpddkvbnnugln', 'gloeofnpjqlkdsqvruvabjrikfwronbrdyyj', 'vbgeinupkvgmgxeaaiuiyojmoqkahwvbpwugdainxciedbdkos', 'mspuhbykmmumtveoighlcgpcapzczomshiblnvhjzqjlfkpina', 'rgmliajkiknongrofpugfgajedxicdhxinzjakwnifvxwlokip', 'fhepktaipapyrbylskxddypwmuuxyoivcewzrdwwlrlhqwzikq', 'qatithxifaaiwyszlkgoljzkkweqkjjzvymedvclfxwcezqebx']
输出:6
预期结果:5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 13:31:25 | 显示全部楼层
kinkon 发表于 2020-4-4 21:20
看例子感觉有顺序要求啊

再来一个,试试哪个快

第二个解答错误

输入:
s = "dsahjpjauf"
words = ["ahjpjau", "ja", "ahbwzgqnuk", "tnmlanowax"]
输出:0
预期结果:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 13:33:30 | 显示全部楼层

输入以下数据超时:

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

使用道具 举报

 楼主| 发表于 2020-4-7 13:34:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 13:35:17 | 显示全部楼层

输入以下数据超时:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 06:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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