我需要找出一个单词在字符串中出现了多少次,但问题是您需要查找的单词之间可以有空格,例如您想查看单词出现了多少次text出现在 *tOeOxOt" 中,它会给你输出 1,或者例如在textt它会给你输出 2,我为此用 pascal 编写了这个过程
procedure search(x:integer; i:integer);
var
x2:integer;
begin
x2:=x+1;
while (x2<=n) and (x2>0) do begin
if myarray[x2]=mystring[i+1] then
if i=length(mystring)-1 then
final:=final+1
else
search(x2,i+1);
x2:=x2+1;
end;
end;
它会检查一个字母出现的次数,例如如果我有ttext它只会给我一个,因为我只从第一个开始检查t所以每次我找到一个时我都会调用该函数t在字符串中,但对于具有许多字符的 2D 数组(例如 1000x1000)来说,此方法太慢,因此我正在寻找更快的解决方案。
您可以检查数组两次,第一次运行时删除所有空格。
在第二个中,使用这样的比较函数(x 是您搜索的数组,y 是您正在搜索的子字符串,i 是您正在检查的当前元素):
function compare(var x,y:myarray; i:integer):boolean;
var l:integer;
Begin
compare:=false;
for l:=1 to length(y) do Begin
if x[i+l] <> y[l] then Exit;
End;
compare:=true;
End;
在数组的每个元素上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)