bonjour a tous, voila, j'essaie de trouver le meilleur algo pour supprimer tout les doublons d'un fichier texte.
les fichiers seront formatés de cette facon :
en gros , un mot par ligne et le but c'est de comparer l'ensemble de ses lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 gfghghhggh ghghghg hgjhjjhjhjh ghhgjjhjhjhjh ghjhgjhjhjh fggyttyytuyu ghgujyuy hgghuuyyuu
voici mes solutions :
1 :
la var list est un tstringlist , c'est elle qui charge le texte
2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 while x < list.Count-2 do begin x := x+1; y := x; while y < list.Count -1 do begin y := y+1; if list[x] = list[y] then begin list.Delete(y); y := y-1; end; end; end;
voila, la premiere methode traite le fichier comme il est, tandis que la deuxieme trie le les lignes par ordre alphabetique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 list.LoadFromFile(currentfile); list.Sort; x := -1; while x < list.Count-2 do begin x := x+1; if list[x] = list[x+1] then begin list.Delete(x+1); x := x-1; end; end;
resultat , la deuxieme solution est beaucoup plus rapide que la premiere mais pour des gros fichiers c'est quand meme assez lent.
ps quand il y a un list.delete[x] le list[x+1] devient list[x] en gros ce qui est au dessus redescend.
y a t'il des autres algo plus rapides.
merci
Partager