Bonjour,
J'ai implementer un algorithme de compteur d'anagrammes.
Je l'ai fait avec Java mais je me rend compte que mon code n'est du tout évolutif.
Et j'ai beaucoup de code pour chaque sequences de traitement..
je voudrait savoir s'il est possible de rendre le code plus évolutif et moins conséquent ?
il y a aussi beaucoup de redondance etc..
le but de ce code est de detecter les possible anagrammes dans une chaine de caractère,
les chaines seul ne sont donc pas pris en compte vue leur unicité,
je fait les comparaison sur deux chaine et plus.. et fait le compte du nombre d'anagrammes,
Je sais que je peux améliorer mon code mais je voudrait vos conseils
merci pour vos réactions.
voici le code:
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 public class AnagrammesImpl { //je remplie une liste avec chaque mot de la chaine de caractères public List<String> anagrammesMethode(String s) { List<String> mList = new ArrayList<String>(); String val= ""; for (int i=0;i< s.length();i++) { val = val + s.charAt(i); if (s.charAt(i) == ' ' ) { mList.add(val); val = ""; } } return mList; } //je supprime les mots unique dans la liste public void suppressionElementUnique(List list) { for(int i=0;i<list.size();i++) { for (int j=i+1;j<list.size();j++) if(list.get(i).equals(list.get(j))) { list.removeAll(Arrays.asList(list.get(j))); } } } //je trie les mots par ordre alphabetique et trie chaque mot charactères par charactères public void trieListeEtMot(List<String> list,List listeTrier) { Collections.sort(list); for(int i=0;i<list.size();i++) { char[] c = list.get(i).trim().toCharArray(); Arrays.sort(c); String sorted = new String(c); listeTrier.add(sorted); } } //je creer un liste et ajoute les anagrammes dans la liste public ArrayList listeAnagrammesChaineChar(List<String> list) { Collections.sort(list); ArrayList listeAnagrammes = new ArrayList() ;// int i=0; for(int i=0;i<list.size();i++) { for(int j=i+1;j<list.size();j++) { if(list.get(i).equals(list.get(j))) { listeAnagrammes.add(list.get(i)); } } } return listeAnagrammes; } //je supprime les doublon dans les anagrammes et fait le compte de mot public int suppressionDoublonAnagrammeEtCalcluNbAnagramme(List list) { int cpt=0; Set set = new HashSet() ; set.addAll(list) ; ArrayList distinctList = new ArrayList(set); for(int i = 0;i<distinctList.size();i++) { cpt++; } return cpt; } }
Partager