文字列内で部分文字列が使用された回数をカウントする単純な方法を使用して、文字列検索アルゴリズムを実装しました。私はjavascriptとpythonで実装しました。 (トップコーダーから)文字列検索アルゴリズムの実装
アルゴリズム:
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))
今、私の質問は、実装ラインのためであるならば(j == b.length
) :それはjavascriptではうまく動作しますが、Pythonではvalに1を加える必要がありますまたはb
の長さから1を引いたものである。なぜこれが起こっているのか分かりません。
おかげで、理解Lulianおかげで、私はちょうど今を見つけましたが、どのようにそれは二つの条件の場合は、同じレベルではない場合であっても、JavaScriptで動作することです。 –