Je dispose d'un ensemble d'éléments d'une taille d'environ 100 à 200. Soit un échantillon d'éléments X
.
Chacun des éléments est un ensemble de chaînes de caractères (le nombre de chaînes dans un tel ensemble est compris entre 1 et 4). X
= { s1
, s2
, s3
}
Pour une chaîne d'entrée donnée (environ 100 caractères), disons P
Je souhaite vérifier si l'un ou l'autre des X
es présent dans la chaîne.
X
es présent en P
si pour tous les s
appartiennent à X
, s
est une sous-chaîne de P
.
L'ensemble des éléments est disponible pour le prétraitement.
Je veux que ce soit aussi rapide que possible avec Java. Approches possibles qui ne répondent pas à mes exigences :
- Vérifier si toutes les chaînes
s
sont des sous-chaînes deP
semble être une opération coûteuse - Parce que
s
peut être n'importe quelle sous-chaîne deP
(pas nécessairement un mot), je ne peux pas utiliser un hachage de mots - Je ne peux pas utiliser directement les expressions rationnelles comme
s1
,s2
,s3
peuvent être présentes dans n'importe quel ordre et toutes les chaînes doivent être présentes en tant que sous-chaînes.
Pour l'instant, mon approche consiste à construire une énorme expression rationnelle à partir de chaque X
avec toutes les permutations possibles de l'ordre des chaînes. Parce que le nombre d'éléments dans X
<= 4, cela reste possible. Ce serait bien si quelqu'un pouvait m'indiquer une meilleure approche (plus rapide/élégante) pour la même chose.
Veuillez noter que l'ensemble des éléments est disponible pour le prétraitement et que je veux la solution en java.