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?
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?
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);
Oui. Ce serait la meilleure réponse que je cherchais. +1 à vous. –
Merci. Ai-je tort ou votre code est faux? vous avez besoin de mettre à jour la variable la plus élevée aussi bien ..? – aneuryzm
@Patrick: Oui, j'ai corrigé ça dans ma réponse. –
Vous voulez rapide ou simple? –
(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.) –