2011-04-21 84 views

回答

3

類似下面應該做的伎倆:

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

我不知道有任何簡單的方法。

+0

如果您使用空字符串作爲最長的初始值,那麼您可以刪除最長的==零測試。 – taskinoor 2011-04-21 08:23:36

+0

好點。這就是說,考慮它,即使最長==零,[最長]將評估爲0,它仍然會工作。 – 2011-04-21 08:30:05

0

你可以在上面使用類似this example排序數組(但不是本例中的「質量」排序使用您的字符串的長度排序),然後最長的字符串將是要麼或最後(取決於你的分類)。

+1

排序以查找最大長度元素?你可以在O(n)中做到這一點。那爲什麼要排序? – taskinoor 2011-04-21 08:20:30

+0

沒錯,湯姆的建議好多了。但是,不要評論所有答案,請嘗試爲自己添加一個答案:-) – Jake 2011-04-21 12:04:53

+0

我想知道提問者是否已經意識到循環遍歷解決方案並尋找更好的答案。檢查是否有對該問題的評論。我會在沒有零檢查的情況下寫同樣的答案。但是,爲什麼我應該發送垃圾郵件並附上某人已發佈的答案?湯姆的答案只是一個評論就足夠了。不是嗎? – taskinoor 2011-04-21 12:23:19

0

我自己並不知道任何目標C,但我的解決方案是保持一個整數'最長'和一個字符串'longestWord',並將其初始化爲0和「」。然後遍歷列表並檢查當前單詞是否長於「最長」值。如果是,則存儲新的長度和當前單詞。在循環結束時,您有最長的詞存儲在'longestWord'變量中。

希望這有助於