sYMMetrY 发表于 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))
{:10_288:}

fan1993423 发表于 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
    return result

Herry2020 发表于 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 in word:
                                temp.append(s)
                        each += 1
                for i in range(len(temp)):
                        sss += temp
                if sss == word:
                        n += 1
        return n
       
print(fun368(s,words))

蒋博文 发表于 2020-4-5 23:13:52

@zltzlt 这个子串有顺序要求吗?就比如acd是不是abcd的子串?

蒋博文 发表于 2020-4-5 23:15:02

也就是说,这个字串是连续的还是不连续的?

zltzlt 发表于 2020-4-6 07:58:57

蒋博文 发表于 2020-4-5 23:15
也就是说,这个字串是连续的还是不连续的?

可以是不连续的,但是有顺序要求

蒋博文 发表于 2020-4-6 10:52:01

zltzlt 发表于 2020-4-6 07:58
可以是不连续的,但是有顺序要求

也就是说acd是不可以改为adc的对吗?

Joy187 发表于 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)==-1):
                flag=1
                break
            else:
                k=k.replace(i,"")
      if(flag==0):
            count+=1
      flag=0
    return count

Joy187 发表于 2020-4-6 10:58:42

fan1993423 发表于 2020-4-4 23:41
adc是不是acde的子序列

感觉不是吧……

zltzlt 发表于 2020-4-6 12:53:38

蒋博文 发表于 2020-4-6 10:52
也就是说acd是不可以改为adc的对吗?

是的

zltzlt 发表于 2020-4-7 13:21:57

March2615 发表于 2020-4-4 20:38
s里面是可以重复的?
比如输入:s=“abcdea”, words = ["cda"]
这时输出是1?


408 ms

zltzlt 发表于 2020-4-7 13:25:40

BngThea 发表于 2020-4-4 20:40


解答错误

输入:s = "dsahjpjauf", words = ['ahjpjau', 'ja', 'ahbwzgqnuk', 'tnmlanowax']
输出:1
预期结果:2

zltzlt 发表于 2020-4-7 13:26:09

TJBEST 发表于 2020-4-4 20:41
先来一个效率低的

1472 ms

zltzlt 发表于 2020-4-7 13:26:31

l0stparadise 发表于 2020-4-4 20:47


524 ms

zltzlt 发表于 2020-4-7 13:28:01

ouyunfu 发表于 2020-4-4 20:54


解答错误

输入:s = "dsahjpjauf", words = ['ahjpjau', 'ja', 'ahbwzgqnuk', 'tnmlanowax']
输出:1
预期结果:2

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

zltzlt 发表于 2020-4-7 13:31:25

kinkon 发表于 2020-4-4 21:20
看例子感觉有顺序要求啊

再来一个,试试哪个快

第二个解答错误

输入:s = "dsahjpjauf"
words = ["ahjpjau", "ja", "ahbwzgqnuk", "tnmlanowax"]
输出:0
预期结果:2

zltzlt 发表于 2020-4-7 13:33:30

chen971130 发表于 2020-4-4 21:43


输入以下数据超时:

zltzlt 发表于 2020-4-7 13:34:02

jdzzj 发表于 2020-4-4 22:44


700 ms

zltzlt 发表于 2020-4-7 13:35:17

ouyunfu 发表于 2020-4-4 22:50


输入以下数据超时:

页: 1 [2] 3
查看完整版本: Python:每日一题 368