我正在做作业,但是我的代码卡住了。 问题是关于两个包含字符串字母作为元素的列表,我们想知道小文本在长文本中出现了多少次。(有序)
示例: long = ['a','k','g','j','a','k','k','a','k','g']
small = ['a','k','g']
然后答案应该是2,因为它出现了两次(第一和最后一部分) 正如我尝试过的:
def search(long,small):
words=[]
for k in range(len(long)):
for l in range(len(small)):
if long[k]==small[l]:
words.append()
return(words)
首先尝试在列表中写下匹配项,然后将列表的len除以得到数字。不幸的是,这给了我第一场比赛,我不确定如何获得所有比赛。希望你们能帮助我。
答案 0 :(得分:1)
您可以通过前进small
的元素并在遇到“奇数”元素时重置计数器来做到这一点:
def search(long,small):
indexCt = 0
count = 0
for k in range(len(long)):
if long[k]==small[indexCt]:
indexCt += 1
else:
indexCt = 0
if(indexCt == len(small)):
indexCt = 0
count += 1
return count
答案 1 :(得分:0)
将长列表切成len(small)个long,每次检查是否相等
<button type="button" class="btn btn-primary" data-igracId="@item.playerId" id="Edit" data-target="#myModalEdit" data-toggle="modal">Izmjeni</button>
输出:
def search(long, small):
return sum(long[i:i+len(small)]==small for i in range(len(long)-len(small)+1))
print(search(['a','k','g','j','a','k','k','a','k','g'], ['a','k','g']))