【发布时间】:2019-02-26 18:33:14
【问题描述】:
我有作业无法正确完成,并且不确定代码有什么问题。
练习是: 用简单的搜索或蛮力找出我们做了多少比较:
我们有 2 个包含字母(字符串)的列表,我们比较它们。打印出进行了多少比较。
例子:
模式= ABABC
text=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。
【问题讨论】:
-
您能否更详细地解释一下您是如何达到 3+1+1+4+1+2+1+3 我想我理解前 3 个,但如果我理解了,那么下一个数字将是2...
-
是的。因此,我们通过一种方式将 BBABA 与 ABABC 进行比较。但是,如果我们比较第一个字母,我们会发现它不是 eqaul,所以我们比较了一个,所以我们添加了一个
-
下一个也是B开头所以+1。第四个我们有ABACA,所以我们比较:我们有A +1,我们有B +1,A +1,C,我们比较+1,但不是B,所以我们转移。
标签: python comparison string-comparison brute-force