[JAVA] Algo très rapide à trouver

Résolu
JEROMAX Messages postés 274 Date d'inscription   Statut Membre Dernière intervention   -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Salut
je cherche un algo pour réaliser ça:

J'ai un tableau énorme fixe contenant des quadruplets de lettres
["a", "b","c","d"]
["b", "b", "a", "b"]
["a", "c", "c","b]
etc.
j'ai ensuite un quadruplet de lettres par exemple ["a","d", "b","b"]

Je veux savoir si au moins une des lettres du quadruplet est présente dans un des quadruplets du tableau.
Par exemple:
["a","d", "b","b"] est-il dans ["a", "b","c","d"] => réponse oui
["a","d", "b","b"] est-il dans ["c", "e", "f", "g"] => réponse non

Vous voyez?

Comment je peux faire ça sachant que l'unique priorité (mais incontournable) est la rapidité d'exécution?
Je ne peux pas me permettre de parcours chaque lettre de chaque entrées du tableau et de la comparer au quadruplet...
Par contre je peux prendre plus de temps pour l'initialisation. C'est à dire que je peux créer un (ou plusieurs) tableau de correspondance dans lequel faire ensuite ces recherches.
J'avais pensé aux opérations binaires mais comme les lettres peuvent être présente plusieurs fois dans un même quadruplet, ça ne marche pas...

Le mieux, à la place d'avoir une réponse par oui ou non (dans l'exemple que je donne ci-dessus), serait d'avoir le nombre de correspondance :-)
Par exemple:

["a","d", "b","b"] est-il dans ["a", "b","c","d"] => réponse 2
["a","d", "b","b"] est-il dans ["c", "e", "f", "g"] => réponse 0


Si vous avez une solution 8-O

Merci
A voir également:

6 réponses

JoloKossovar Messages postés 111 Date d'inscription   Statut Membre Dernière intervention   33
 
Salut ^^
Je ne vois pas d autre moyen que de parcourir tes petits tableau de 4 lettres.
Sur ces petits tableaux, ca ira tres vite ^^
Et puis tu peux toujours gagner du temps. Par exemple si ta fonction trouve une coprrepondance elle s'arrete tout de suite et donc na parcoure pas l'ensemble du tableau.

Combien de tableau a tu a tester ?
0
JEROMAX Messages postés 274 Date d'inscription   Statut Membre Dernière intervention   10
 
Ok merci mais j'ai trouvé un autre moyen avec des expressions régulières qui évite le parcours de tous ces petits tableaux.
0
JoloKossovar Messages postés 111 Date d'inscription   Statut Membre Dernière intervention   33
 
Ha bah vi ^^ j'aurais pas pensé aux expressions régulieres ^^
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Rationnelles, les expressions, pas régulières...
Mais ceci-dit, es-tu sûr qu'en Java, elles ne vont pas parcourir toutes les lettres une à une, juste ce que tu voulais éviter ?
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

rationnelles ou régulière?
régulière ou rationnelles?

Ben, il y aura toujour des débâts concernant ce terme :-D

Au lieu de se borner sur ça, vaut mieux les comprendre :-)

Donc ce que tu dis c'est vrai mais pas pour tout le monde (par exemple pour Laurent Dami, celui qui a traduit l'execellent livre - on peut dire la Bible, Maitrîse des Expressions Régulières de Jeffrey E.F. Friedl

Je cite un sous chapitre entier pour ça :

Expressions régulières ou rationnelles?

"En vertu des principes énoncés plus haut, j'ai préféré régulières à rationnelles. Je suis conscient que depuis plusieurs dizaines d'années toute école française a utilisé le terme rationnelles, et que certains défendent aujourd'hui encore avec vigueur cette traduction, comme une sorte d'étendard de la tradition rationnelle française contre l'imperialisme anglophone. Cependant les expressions en question n'ont pas grand-chose à voir avec la raison!

Il est vrai que d'un point de vue mathématique elles ont une certaine parenté avec les nombres que l'on nomme rationnels, qui se traduisent également par rational numbers en anglais. Dans cette logique-là, il aurait peut-être fallu effectivement parler de rational expressions...mais la traduction anglophone n'en a pas voulu ainsi, préférant mettre en avant l'aspect pratique (expressions gouvernées par des règles) plutôt que la cohérence mathématique. Les deux positions sont en principe défendables, mais aujourd'hui la seconde a clairement le dessus: une recherche dans les principaux moteurs d'indexation WEB montre que même dans le monde francophone les pages contenant expressions régulières sont quatre fois plus nombreuses que celles contenant expressions rationnelles.

Ainsi, pour éviter de prendre le lecteur en otage dans des querelles d'école, et pour lui éviter d'inutiles confusions lorsqu'il lira des manuels ou des magazines anglophones, j'ai privilégié le terme régulières."

Par Jeffrey E.F. Friedl - Traduction par Laurent Dami - Edition O'Reilly - 2003
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JEROMAX Messages postés 274 Date d'inscription   Statut Membre Dernière intervention   10
 
Effectivement, je ne sais pas comment Java exécute les expressions rationnelles... :-/
Mais je pense que, de toutes façons, c'est plus rapide de chercher une chaine dans une autre plutôt que de parcourir chaque tableau.
Pourquoi rationnelles et pas régulières? j'ai toujours dit "régulières" moi. ???
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Parce que « expressions régulières » est une mauvaise traduction de l'anglais « regular expression » ;)
Le terme français qui convient est bel et bien « expression rationnelle »
Enfin, c'pas un drame non plus :p
0
mika903 Messages postés 721 Date d'inscription   Statut Membre Dernière intervention   32
 
tape dans google lol
0