求DELPHI算法

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:09:44
有一个TStringList,其中的内容为:
A1=100
A1=101
A2=88
A2=87
A2=90
......
A80=99
A80=123
A80=122
每个名字的行数不固定
我想统计出A1--A80的值的和各位多少,全遍历循环的方法就不用了,效率太低,各位大大有好方法吗?
我指的全遍历循环是指:
for i:=1 to 80 do
begin
for j:=0 to ts.count-1 do
begin
//如果A后面的值=i则相加
......
end;
end;
我只想循环一次,或者在这个基础上优化一下也行,主要是解决效率问题。

你试运行以下代码,这是循环1次的,希望你得到启发。
Var
s:TStringList;
m,count:Integer;
begin
s:=TStringList.Create;
s.Add('A1=100');
s.Add('A80=123');
s.Add('A1=101');
s.Add('A80=122');
s.Add('A2=87');
s.Add('A2=90');
s.Add('A80=99');
s.Add('A2=88');
s.sort;
for m:=0 to s.Count-1 do
begin
count:=count+StrToInt(s.ValueFromIndex[m]);
if m<>s.Count-1 then
begin
if s.Names[m]<>s.Names[m+1] then
begin
showmessage(s.Names[m]+'='+inttostr(count));
count:=0;
end;
end else showmessage(s.Names[m]+'='+inttostr(count));
end;
end;

不循环遍历根本就不可能做出来。
你还是修仙吧。。。

循环遍历 累计相加

不遍历一遍怎么知道各有多少?