比较两个字符串列表 python 时计算比较的次数
Count the number of comparison when compare two lists of string python
我有作业做不对,也不确定代码有什么问题。
练习是:
通过简单搜索或蛮力查找我们进行了多少次比较:
我们有 2 个包含字母(字符串)的列表,我们比较 them.Print 进行了多少次比较。
示例:
模式=ABABC
文本= ABBABACABCBAC
我是如何尝试的:
def search(text,pattern):
text=list(text)
pattern=list(pattern)
n=len(text)
m=len(pattern)
co=1
l=0
k=0
while k<=m:
if text[l] == pattern[k]:
co+=1
l+=1
k+=1
else:
co+=1
l+=1
k=0
c=co
return "Simple matching made " + str(c) +"
comparisons"
应该是16,因为我们按字母比较3+1+1+4+1+2+1+3
我们得到 3:A=A 表示 +1,B=B 表示 1,
B 不是 A,所以我们加 +1,但在文本中移动 1。
我编写了一些脚本来满足我认为您正在寻找的内容,但我认为您最后漏掉了一个术语,除非我做错了。
模式 = 'ABABC'
文本 = 'ABBABACABCBAC'
def search(text, pattern):
slices = len(text) - len(pattern)
for i in range(0, slices + 1):
count = 0
text_to_compare = text[i:i + len(pattern)]
for j in range(len(pattern)):
count += 1
if pattern[j] == text_to_compare[j]:
continue
else:
break
print("{} -> {}".format(text_to_compare, count))
search(text, pattern)
这输出
ABBAB -> 3
BBABA -> 1
BABAC -> 1
ABACA -> 4
BACAB -> 1
ACABC -> 2
CABCB -> 1
ABCBA -> 3
BCBAC -> 1
它可以适应总计数,如:
def search(text, pattern):
total_count = 0
slices = len(text) - len(pattern)
for i in range(0, slices + 1):
count = 0
text_to_compare = text[i:i + len(pattern)]
for j in range(len(pattern)):
count += 1
total_count += 1
if pattern[j] == text_to_compare[j]:
continue
else:
break
print("{} -> {}".format(text_to_compare, count))
print("Total count: {}".format(total_count))
输出与之前相同,但还包含:
Total count: 17
这是您要找的吗?我可以解释你不明白的部分:)
我有作业做不对,也不确定代码有什么问题。
练习是: 通过简单搜索或蛮力查找我们进行了多少次比较:
我们有 2 个包含字母(字符串)的列表,我们比较 them.Print 进行了多少次比较。
示例:
模式=ABABC
文本= ABBABACABCBAC
我是如何尝试的:
def search(text,pattern):
text=list(text)
pattern=list(pattern)
n=len(text)
m=len(pattern)
co=1
l=0
k=0
while k<=m:
if text[l] == pattern[k]:
co+=1
l+=1
k+=1
else:
co+=1
l+=1
k=0
c=co
return "Simple matching made " + str(c) +"
comparisons"
应该是16,因为我们按字母比较3+1+1+4+1+2+1+3
我们得到 3:A=A 表示 +1,B=B 表示 1,
B 不是 A,所以我们加 +1,但在文本中移动 1。
我编写了一些脚本来满足我认为您正在寻找的内容,但我认为您最后漏掉了一个术语,除非我做错了。 模式 = 'ABABC' 文本 = 'ABBABACABCBAC'
def search(text, pattern):
slices = len(text) - len(pattern)
for i in range(0, slices + 1):
count = 0
text_to_compare = text[i:i + len(pattern)]
for j in range(len(pattern)):
count += 1
if pattern[j] == text_to_compare[j]:
continue
else:
break
print("{} -> {}".format(text_to_compare, count))
search(text, pattern)
这输出
ABBAB -> 3
BBABA -> 1
BABAC -> 1
ABACA -> 4
BACAB -> 1
ACABC -> 2
CABCB -> 1
ABCBA -> 3
BCBAC -> 1
它可以适应总计数,如:
def search(text, pattern):
total_count = 0
slices = len(text) - len(pattern)
for i in range(0, slices + 1):
count = 0
text_to_compare = text[i:i + len(pattern)]
for j in range(len(pattern)):
count += 1
total_count += 1
if pattern[j] == text_to_compare[j]:
continue
else:
break
print("{} -> {}".format(text_to_compare, count))
print("Total count: {}".format(total_count))
输出与之前相同,但还包含:
Total count: 17
这是您要找的吗?我可以解释你不明白的部分:)