在数组中获取最常出现的NSString

ane*_*yzm 2 arrays objective-c nsstring ios

给定一系列NSString具有多个重复副本的s:

AAA
BBB
AAA
AAA
BBB
BBB
BBB
BBB
CCC
Run Code Online (Sandbox Code Playgroud)

获取最常发生的字符串的最简单方法是什么?

Eva*_*ski 7

使用NSCountedSet然后找到最大的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

检查结果:

NSLog(@"Most frequent string: %@", mostOccurring);
Run Code Online (Sandbox Code Playgroud)