我有一個填充了200,000個單詞的NSArray,我不知道每個單詞的長度。 我需要知道該數組中包含的單詞的最大長度是多少。查找NSArray中的最長字符串
例如,如果我的數組是{「狗」,「人」,「驚豔」} array中一個字的最大長度是7(「驚豔」)
我會怎樣做這個?
我有一個填充了200,000個單詞的NSArray,我不知道每個單詞的長度。 我需要知道該數組中包含的單詞的最大長度是多少。查找NSArray中的最長字符串
例如,如果我的數組是{「狗」,「人」,「驚豔」} array中一個字的最大長度是7(「驚豔」)
我會怎樣做這個?
除此之外意味着遍歷數組在所有的方法,你可以很容易地valueForKeyPath:
做到這一點,利用@max
集合操作:
NSNumber* maxLength= [array valueForKeyPath: @"@max.length"];
我很好奇這是如何工作的。你能解釋一點嗎? – BlueMeanie
@BlueMeanie這是可能的,因爲所有集合都實現了一些運算符,如max(螺旋省略以避免引號),avg,count等等......這裏是參考:http://developer.apple.com/library/ios/#文檔/可可/概念/ KeyValueCoding/Articles/CollectionOperators.html –
你可以試試這個
要查找最長字長
NSArray *wordList = [NSArray arrayWithObjects:@"dog", @"person", @"amazing", nil];
int maxLen, strLen;
for(NSString *str in wordList) {
strLen = [str length];
if (strLen > maxLen) {
maxLen = strLen;
}
}
NSLog(@"Longest Word Length = %d", maxLen);
爲了找到長est字
NSArray *wordList = [NSArray arrayWithObjects:@"dog", @"person", @"amazing", nil];
NSString *longestWord = nil;
for(NSString *str in wordList) {
if (longestWord == nil || [str length] > [longestWord length]) {
longestWord = str;
}
}
NSLog(@"Longest Word = %@", longestWord);
快速枚舉似乎比鍵值編碼更快,但我可能會保留最長的* length *而不是最長的* string *,以避免出現[longestword長度]'被重複計算。 –
如果你想避免多次呼叫,但是你仍然希望實際的單詞在最後,如果你想避免'[longestword length]',或者同時存儲這兩個字。 –
沒有什麼技術比簡單地遍歷數組並尋找最長的元素更快。 –
@HotLicks看到Ramy的回答 – MZimmerman6
@ MZimmerman6 - 我願意打賭,這種方法更慢。 –