Текущий архив: 2006.01.29;
Скачать: CL | DM;
Вниз
Какая строка чаще всего встречается в Tstringlist? Найти похожие ветки
← →
Kostyan (2006-01-08 18:36) [0]Возникла такая проблемка - нужна функция , возвращаяющая строку, которая наиболее часто встречается в TStringList...
Можете помочь?
← →
Desdechado © (2006-01-08 18:38) [1]stringlist.sorted:=true
перебор строк с подсчетом
← →
TUser © (2006-01-08 21:21) [2]за линейное время реашется. Просматрива5шь список, хранишь наибольшее сейчас и наибольшее ваабще. Протрезвею - напишу.
← →
Kostyan (2006-01-08 22:50) [3]ок жду =)
← →
Alexander PAnov © (2006-01-08 23:07) [4]
procedure TForm1.Button1Click(Sender: TObject);
var
L,L1: TStringList;
i: Integer;
Res: Integer;
begin
L := TStringList.Create;
L1 := TStringList.Create;
try
L.Assign(Memo1.Lines);
L.Sorted := True;
L1.Sorted := True;
L1.Duplicates := dupIgnore;
for i := 0 to L.Count-1 do
begin
Res := L1.Add(L[i]);
L1.Objects[Res] := Pointer(Integer(L1.Objects[Res])+1);
end;
Memo1.Lines.Clear;
for i := 0 to L1.Count-1 do
begin
Memo1.Lines.Add("Count:"+IntToStr(Integer(L1.Objects[i]))+ ", строка:"+L1[i]);
end;
finally
L.Free;
L1.Free;
end;
end;
← →
Kostyan (2006-01-08 23:25) [5]Alexander PAnov Респект! Спасибо
← →
TUser © (2006-01-09 11:38) [6]Извини, в [2] фигню написал про линейное время.
List.Sort;
result:="null string";
count:=0;
current:=result;
c_count:=0;
for i:=0 to List.Count do begin
if i < List.Count then
given:=List[i]
else given:="null string";
if current=given then begin
inc (c_count);
end else begin
if c_count > count then begin
result:=current;
count:=c_count;
end;
current:=given;
c_count:=1;
end;
end;
Страницы: 1 вся ветка
Текущий архив: 2006.01.29;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.033 c