2011-04-21 2 views

Répondre

3

Quelque chose comme ce qui suit devrait faire l'affaire:

NSString *longest = nil; 
for(NSString *str in wordlist) { 
    if (longest == nil || [str length] > [longest length]) { 
     longest = str; 
    } 
} 

Je ne suis pas au courant d'une méthode plus simple.

+0

Si vous utilisez une chaîne vide comme valeur initiale de plus longue, vous pouvez supprimer le plus long test == nil. – taskinoor

+0

Bon point. Cela dit, en y pensant, même si c'est le plus long == nul, [la plus grande longueur] évaluera à 0, et ça marchera toujours. –

0

Vous pouvez utiliser quelque chose comme this example pour trier un tableau (mais au lieu de la sorte de « qualité » dans l'exemple d'utiliser une sorte de longueur sur vos cordes) et la plus longue chaîne sera soit en haut ou à la fin (en fonction de votre tri).

+1

Tri pour trouver l'élément de longueur maximale? Vous pouvez le faire en O (n). Alors pourquoi trier? – taskinoor

+0

Certes, la suggestion de Tom est beaucoup mieux. Mais au lieu de commenter toutes les réponses, essayez d'en ajouter une pour vous :-) – Jake

+0

Je me demandais si le questionneur était déjà au courant de la solution de la boucle de cheminement et en cherchait une meilleure. Vérifiez qu'il y a un commentaire sur la question. Et j'écrirais la même réponse que de Tom sans le chèque nul. Mais pourquoi devrais-je spammer avec la réponse que quelqu'un a déjà posté? Juste un commentaire dans la réponse de Tom est suffisant. N'est-ce pas? – taskinoor

0

Je ne connais pas d'objectif C moi-même, mais ma solution serait de garder un entier 'longest' et une chaîne 'longestWord' et de l'initialiser à 0 et "". Puis bouclez sur la liste et vérifiez si le mot actuel est plus long que la valeur «le plus long». Si c'est le cas, enregistrez la nouvelle longueur et le mot actuel. A la fin de la boucle, vous avez le mot le plus long stocké dans la variable 'longestWord'.

Hope this helps

Questions connexes