2012-09-05 7 views
-2

I ont 2 cordes deComparaison de chaînes séparées par des virgules

string1="fruit,animal,vehicle"; 
string2="plane,fruit,culture,animal"; 

Donc, si je compare string1 et string2 il faut dire vrai que les fruits, l'animal est présent dans la chaîne dans les deux chaînes d'autre false si rien est présent.

+2

Alors qu'avez-vous essayé? –

+0

Donc, il retourne vrai si au moins un élément apparaît dans les deux chaînes? –

+1

expliquer exactement ce que le comportement souhaité est –

Répondre

0
function compare(string1, string2) { 
    var arr1 = string1.split(","); 
    var arr2 = string2.split(","); 
    for (var i = 0; i < arr1.length; i++) { 
     for (var j = 0; j < arr2.length; j++) { 
      if (arr1[i] === arr2[j]) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
+0

Fonctionne, mais garanti pour être lent sur des chaînes suffisamment longues. –

+0

'arr1' et' arr2' sont des globals implicites. – jbabey

+0

@jbabey Bonne prise. –

2

comparant chaque élément dans le tableau 1 avec tous les éléments de matrice 2 peut être très lente, car les exécution augmente quadratiquement.

Que diriez-vous de cet algorithme pour trouver des doublons:

  1. concaténer les deux tableaux - tri exécution
  2. constant() le tableau de résultats - exécution dépend de l'algorithme utilisé par le moteur javascript, mais devrait normalement être O (n log n)
  3. itérer sur elle la comparaison de chaque élément de la precedessor - O (n) exécution

Notez que lorsque il peut y avoir des doublons dans les chaînes d'entrée t eux-mêmes, ceux-ci doivent être préalablement retirés en utilisant la même technique.

0
var string1="fruit,animal,vehicle", 
string2="plane,fruit,culture,animal"; 
function compare(string1, string2){ 
    var s = string1.split(","); 
    for(var k = 0 ;k < s.length; k++){ 
     if(string2.indexOf("," + s[k] + ",")) 
     { 
      return true; 
     } 
    } 
    return false; 
} 


compare(string1, string2); 
Questions connexes