我有一组数据(自定义结构体中的一项),
我如何把其中相同的项名称取到(直接拿到),还有此名称重复的次数???
最好有一例子!!!
例如:
一组数据为:A,A,A,A,B,B,B,B,B,B,B,B,C,C
我需要提取A,B,C三项和它们各自出现的次数??????????
越快越好!!!
我如何把其中相同的项名称取到(直接拿到),还有此名称重复的次数???
最好有一例子!!!
例如:
一组数据为:A,A,A,A,B,B,B,B,B,B,B,B,C,C
我需要提取A,B,C三项和它们各自出现的次数??????????
越快越好!!!
解决方案 »
- 关于状态兰的问题
- 如何查找动态生成的控件
- 简单问题:请高手看看吧。我一直苦闷地在调试
- 关于fastreport中fruserdataset的问题,急在线等
- 请看下面XML函数,为什么不能起到删除作用?
- 有点难度的随机数问题?分不够再加!
- 各位仁兄帮帮我,我给MM写了一封情书,她这样回,你们为我分析一下我有多少机会.......
- 为什么使用ADOQuery1.LoadFromFile后再使用SQL语句返回结果集则出错?
- 关于获取坐标的问题
- 如何用SQL语句截取Paradox中的字符(内空)
- 用dxDBTreeList控件,请教大家一个SQL语句的问题
- 花姐逼俺放分给它~~~~~~~~俺莫分,只能放这点~~~花姐进来拿哈:(
a:array of string;//A,A,B,B,C,........sl := TStringList.Create;
for i:=Low(a) to High(a) do
sl.Values[s[i]] := IntToStr(StrToIntDef(sl.Values[s[i]],0) + 1);
sl.Free;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TElement = Record
FsElement: string;
FiCount: integer;
end;
TArrElement = array of TElement; TForm2 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure SubSumCount(arrStr: array of string;var arrElement: TArrElement);
end;var
Form2: TForm2;implementation{$R *.dfm}{ TForm2 }procedure TForm2.SubSumCount(arrStr: array of string;
var arrElement: TArrElement);
var
i,j:integer;
bFlag:boolean;
begin
SetLength(arrElement,0);
for i := Low(arrStr) to High(arrStr) do
begin
bFlag := False;
for j := Low(arrElement) to High(arrElement) do
begin
if arrStr[i]=arrElement[j].FsElement then
begin
Inc(arrElement[j].FiCount);
bFlag := True;
break;
end;
end;
if not bFlag then
begin
SetLength(arrElement,High(arrElement)-Low(arrElement)+2);
arrElement[High(arrElement)].FsElement :=arrStr[i];
arrElement[High(arrElement)].FiCount :=1;
end;
end;
end;procedure TForm2.Button1Click(Sender: TObject);
var
i:integer;
astr:array of string;
arrEle: TArrElement;
begin
SetLength(aStr,14);
i:=0;
aStr[i] := 'A';
inc(i);
aStr[i] := 'A';
inc(i);
aStr[i] := 'A';
inc(i);
aStr[i] := 'A';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'B';
inc(i);
aStr[i] := 'C';
inc(i);
aStr[i] := 'C';
SubSumCount(aStr,arrEle);
for i := Low(arrEle) to High(arrEle) do
begin
Memo1.Lines.Add(arrEle[i].FsElement + ':' + IntToStr(arrEle[i].FiCount));
end;
end;end.
我要得到这组数据里有哪些数据和各个数据出现的次数!!!拜托各位了!!!很急!
如果数组比较大,要提高效率,可以在第二重循环的部分修改成hash算法。