J'ai une liste de mots, et je veux comparer les mots les uns par rapport aux autres, pour les stocker dans un HashTable (dans des groupes d'anagrammes).Stocker des groupes de mots dans une table de hachage
Je sais comment comparer deux mots pour tester si elles sont une anagramme, mais je ne peux pas comprendre comment comparer une plus longue liste de mots.
Par exemple:
- Il 10 mots dans la liste
- 5 d'entre eux sont anagrammes les uns des autres
- 2 d'entre eux sont également anagrammes les uns des autres (mais pas du premier groupe)
- Donc, 3 groupes; 1 groupe d'un ensemble de anagrammes (5 mots), 1 groupe pour l'autre ensemble (2 mots), et 1 groupe (3 mots) de mots aléatoires
Comment puis-je comparer les 10 mots pour trouver les 5 +2 anagrammes, et stockez ces groupes d'anagrammes (séparément) dans une table de hachage?
EDIT:
Le code que j'ai pour comparer deux mots:
public static boolean isAnagram(String firstWord, String secondWord) {
boolean anagram;
if (firstWord.length() != secondWord.length()) {
return false;
}
firstWord = firstWord.toLowerCase();
secondWord=secondWord.toLowerCase();
char[] c1 = firstWord.toCharArray();
char[] c2 = secondWord.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
String sc1 = new String(c1);
String sc2 = new String(c2);
if (sc1.equals(sc2)) {
System.out.println("ANAGRAMS");
} else {
System.out.println("NOT ANAGRAMS");
}
return sc1.equals(sc2);
}
Je suis sûr que cela pourrait être adapté pour fonctionner avec la comparaison d'un nombre illimité de chaînes. Ensuite, le dilemme suivant consiste à s'assurer que les groupes séparés d'anagrammes sont stockés dans la table de hachage.
qu'avez-vous essayé? – Kajal
Solution de force brute serait de comparer chaque mot avec d'autres mots et de stocker chaque fois que vous trouvez un anagramme. – Bhargav
Le moyen le plus simple serait de faire une boucle sur tous les mots et de comparer chaque mot * w * avec l'autre 9. Le faire une hashtable: * w * -> anagrammes de * w *. – Shaido