Bonjour,
je suis sur un algorithme d'anagrammes et j'essaie de l'implementer en java
je sais c'est le plus beau des langages pour faire des exercices d'algorithme mais bon c'est mon choix..
je fais donc appel a vous pour me guider dans mon parcours,
je fait un code fonctionnel mais pas évolutifs du tout.. je pense ?
j'espère que le code ne fait pas mal au yeux :X
je suis determiner a arriver a une meilleur solution avec votre aide,
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,
voici le code de ma classe ou j'ai toute mes méthodes implémenter pour faire cette opération:
Code java : 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; } }
le main est deja implémenter comme je disait le tous est fonctionnel..
mais il ne faut pas que cela soit fonctionnel pour être évolutifs etc...
Merci d'avance pour vos réactions.
Partager