2012-06-21 2 views
2

Dans une série de NSString s qui ont plusieurs copies répétées:Obtenez plus NSString se produisant dans un tableau

AAA 
BBB 
AAA 
AAA 
BBB 
BBB 
BBB 
BBB 
CCC 

Quelle est la meilleure façon d'obtenir la chaîne qui est le plus se produire?

+0

Vous voulez rapide ou simple? –

+0

(Triez le tableau, gardez un pointeur sur la chaîne la plus populaire et faites le compte.Marchez le tableau, notez quand les chaînes changent Comptez des chaînes identiques et si le nouveau compte est> "le plus populaire" mettez à jour le pointeur "le plus populaire" et son nombre.) –

Répondre

7

Utilisez NSCountedSet puis recherchez le plus grand countForObject:.

NSCountedSet *bag = [[NSCountedSet alloc] initWithArray:myArray]; 

NSString *mostOccurring; 
NSUInteger highest = 0; 
for (NSString *s in bag) 
{ 
    if ([bag countForObject:s] > highest) 
    { 
     highest = [bag countForObject:s]; 
     mostOccurring = s; 
    } 
} 

Vérification du résultat:

NSLog(@"Most frequent string: %@", mostOccurring); 
+0

Oui. Ce serait la meilleure réponse que je cherchais. +1 à vous. –

+0

Merci. Ai-je tort ou votre code est faux? vous avez besoin de mettre à jour la variable la plus élevée aussi bien ..? – aneuryzm

+0

@Patrick: Oui, j'ai corrigé ça dans ma réponse. –

Questions connexes