我有一个填充了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 - 我愿意打赌,这种方法更慢。 –