2010-12-03 23 views
0

Je cherche comment identifier les caractères communs à partir d'un ensemble de chaînes de longueur différente. Tout d'abord, permettez-moi de dire que le même problème a été signalé ici, et l'auteur est en quelque sorte en mesure de trouver la réponse. Mais je ne pouvais pas obtenir sa solution. J'ai essayé d'afficher ma requête sur là, mais je ne sais pas si j'obtiendrai une réponse. Donc, je poste en tant que nouveau. (Ceci est le lien pour l'ancien qs Find common chars in array of strings, in the right order de-chaînes dans le bon-ordre).identifier les caractères communs dans le bon ordre (type d'expression régulière) à partir d'un tableau de chaînes

Je prends le même exemple de lui.

Supposons que "+" est le "char joker":

Array ( 0 => '48ca135e0 $ 5', 1 => 'b8ca136a0 $ 5', 2 => 'c48ca13730 $ 5', 3 => '48ca137a0 $ 5');

doit retourner:

wildcard $ = '+ 8ca13 + 0 $ 5';

Cela me semble être un problème standard. donc je doute qu'il y aura une bibliothèque pour cela. Si pas pls montrent un peu de lumière pour résoudre ce problème. Je ne pense pas comparer le travail char-par-char (comme dit dans la réponse), car le char correspondant peut venir n'importe où (par exemple: - arr1 [1] et arr2 [3] peut être l'indice de début de certains correspondant sous-chaîne et dans l'autre sens aussi).

salutations,

Répondre

0

On dirait que vous êtes à la recherche de la « plus longue chaîne commune ». La première sous-chaîne commune la plus longue est 8ca13, la seconde plus longue est 0 $ 5. Une fois que vous avez ces deux chaînes, vous pouvez prendre l'une des chaînes de l'ensemble et remplacer les caractères supplémentaires par un + simple.

http://en.wikipedia.org/wiki/Longest_common_substring_problem