ورود

View Full Version : سوال: بهینه ترین جستجو در یک رشته



kamran_14
دوشنبه 11 اردیبهشت 1391, 00:38 صبح
سلام آیا بعد از جستجوی خطی که پرهزینه هست می شه با کمترین هزینه یک زیر رشته را از یک رشته پیدا کرد؟

mbshareat
دوشنبه 11 اردیبهشت 1391, 01:01 صبح
سلام
ببینین این تاپیک (http://barnamenevis.org/showthread.php?289501-%D8%AA%D9%81%DA%A9%DB%8C%DA%A9-%DB%8C%DA%A9-%D8%B1%D8%B4%D8%AA%D9%87-%D8%A7%DB%8C-%DA%A9%D9%87-%D8%A8%D8%A7-%DB%8C%DA%A9-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1-%D8%AE%D8%A7%D8%B5-%D8%AC%D8%AF%D8%A7%D8%B4%D8%AF%D9%87-%D8%A7%D8%B3%D8%AA&highlight=SubStr)به دردتون میخوره؟

kamran_14
دوشنبه 11 اردیبهشت 1391, 10:45 صبح
من از تابع posex در دلفی استفاده می کنم اما خطا می ده.
می شه کمکم کنید؟

اینطوری نوشتم...
Posex('y','bye bye',3)

mbshareat
دوشنبه 11 اردیبهشت 1391, 13:06 عصر
سلام
ببخشید من سوالتون رو درست نخونده بودم.یادمه من هم مشکل داشتم ولی نمی دونم مشکل چی بود.
این کد رو اجرا کردم خطا نگرفت:

Function PosEx(const SubStr, S: string; Offset: Cardinal): Integer;
var
i : pchar;
begin
if (offset<1) or (offset>length(s)) then
begin
Result := 0;
Exit
end;
i:=strpos(@s[offset],@substr[1]);
if i=nil then
PosEx:=0
else
PosEx:=succ(i-pchar(s));
end;
procedure GetAllPos(const SubStr, S: string;Var SubPos:Array Of Integer;Var SubPosNo:Integer);
Var
St,P:Word;
begin
SubPosNo:=0;
St:=1;
Repeat
P:=PosEx(SubStr,S,St);
If P=0 Then
Exit
Else
Begin
Inc(SubPosNo);
SubPos[SubPosNo]:=P;
St:=P+1;
End;
Until False;
end;

procedure TForm1.FormCreate(Sender: TObject);
Var
SubPos:Array [0..10]Of Integer;
N,I:Integer;
S,SubS,MsgStr:String;
begin
S:='bye bye';
SubS:='y';
ShowMessage(IntToStr(Posex(SubS,S,3)));
GetAllPos(SubS,S,SubPos,N);
For I:=1 To N Do
MsgStr:=MsgStr+IntToStr(SubPos[I])+#13#10;
ShowMessage(MsgStr);
end;