gpt4 book ai didi

javascript - 字符串搜索算法实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:40 28 4
gpt4 key购买 nike

我已经使用朴素的方法实现了字符串搜索算法,以计算子字符串在字符串中出现的次数。我用 javascript 和 python 实现了。

算法(来自 Topcoder):

function brute_force(text[], pattern[]) 
{
// let n be the size of the text and m the size of the
// pattern
count = 0
for(i = 0; i < n; i++) {
for(j = 0; j < m && i + j < n; j++)
if(text[i + j] != pattern[j]) break;
// mismatch found, break the inner loop
if(j == m) // match found
count+=1
return count
}
}

Javascript 实现:

a = "Rainbow";
b = "Rain";
count = 0;
function findSubStr(Str, SubStr){
for (i = 0; i<a.length; i++){
//document.write(i, '<br/>');
for (j = 0; j < b.length; j++)
//document.write('i = ',i, '<br/>');
//document.write(j, '<br/>');
if(a[i + j] != b[j]) break;
document.write('j = ', j, '<br/>')
//document.write('i = ',i, '<br/>');
if (j == b.length)
count+=1;
}
return count;
}
document.write("Count is ",findSubStr(a,b), '<br/>');

Python 实现:

a = "Rainbow"
b = "Rain"
def SubStrInStr(Str, SubStr):
count = 0
for i in range(len(Str)):
for j in range(len(SubStr)):
print j
if (a[i + j] != b[j]):
break
if (j+1 == len(SubStr)):
count+=1
return count
print(SubStrInStr(a, b))

现在我的问题是关于实现 if (j == b.length) 的行:它在 javascript 中运行良好,但对于 python 我需要将 j 的值加 1 或从b 的长度中减去1。我不知道为什么会这样。

最佳答案

for x in range(4)

与 Python 中的 Javascript 不同,for 循环用于列表中的每个元素。 x 将采用的最后一个值是列表 [0, 1, 2, 3] 的最后一个元素,即 3。

for(x = 0; x < 4; x++)

在 Javascript 中,x 的值为 4,循环将结束,因为 x < 4 条件不再适用。 x 的最后一个值是 4。

关于javascript - 字符串搜索算法实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431712/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com