关于算法如何实现?急! ( 积分: 20 )

  • 主题发起人 主题发起人 sunnysheng
  • 开始时间 开始时间
S

sunnysheng

Unregistered / Unconfirmed
GUEST, unregistred user!
有个动态字符串数组a=('aaa','aaa','bbb','ccc','aaa','bbb','bbb'),想把里面相同的部分去掉达到这种效果a=('aaa','bbb','ccc'),请问如何实现?
 
有个动态字符串数组a=('aaa','aaa','bbb','ccc','aaa','bbb','bbb'),想把里面相同的部分去掉达到这种效果a=('aaa','bbb','ccc'),请问如何实现?
 
方法很多,可以放到数据库再distinct选出来。
 
或者循环放到TStringList,下次加的时候判断有没有,有就不加了,没有才加!
 
同意第二种方法,简单实用!
 
我也觉得放到表里distinct出来比较好
 
现在就是这个循环把我搞晕了,不知怎的就是写不好这个算法。
 
procedure ProcessSameString(DourStr,DestStr:TStrings);
var
s:String;
i:integer;
begin
if (DourStr=nil) or (DestStr=nil) then Exit;
for i:=0 to DourStr.Count-1 do
begin
s:=DourStr.Strings;
if DestStr.IndexOf(s) =-1 then
DestStr.add(s);
end;
end;
//DestStr就是你想要的字符串列表.
 
var strList:TStringList;
..........................
strList := TStringList.create;
for i := 0 to length(a)-1 do begin
if strList.indexof(a)<0 then begin
strList.add(a)
end;
end;
strList.sort;
setlength(a,strList.count)
for i := 0 to strList.count -1 do begin
a := strList
end;
 
请问:我用的是动态数组,怎样使TStrings的数据导到动态数组中?
 
const
a: Array[0..6] of String = ('aaa','aaa','bbb','ccc','aaa','bbb','bbb');
var
i: Integer;
b: array of String;
sl: TStringList;
begin
sl := TStringList.Create;
for i := Low(a) to High(a) do
begin
if sl.IndexOf(a) <> -1 then continue
else sl.Add(a);
end;
SetLength(b, sl.Count);
for i := 0 to sl.Count - 1 do
b := sl.Strings;
end;
 
思想都说了,写代码还不简单,a如果也为动态数组也是一样的。
 
谢谢各位!
 

Similar threads

回复
0
查看
978
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部