我的数组对象如下:
10,10,10
20,23,14
10,10,10
10,10,10
10,10,10
32,23,42
32,23,42
10,10,10
32,23,23
32,23,23
如何通过这个数组找出相同的对象按顺序重复多少次,然后添加一个,以及它重复的次数?
然后使用以下对象保存新数组:
10,10,10,1
20,23,14,1
10,10,10,3
32,23,42,2
10,10,10,1
32,23,23,2
任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
将每三个整数分解为自己的数组(确保它们是字符串)。
然后遍历这些数组中的每一个,并输入到NSMutableDictionary,键是字符串(您的数字),值是一个计数器(如果看到一次,加1等等)
保持指向最高键的指针(如果newCount> highestCountPointer,则highCountPointer = newCount)
在该迭代结束时,将highestCountPoints的数字添加到数组的末尾。
答案 1 :(得分:0)
试试这个:
NSMutableArray *outArray = [[NSMutableArray alloc] init];
for (NSUInteger j = 0; j < [theArray count]; j++) {
id object = [theArray objectAtIndex:j];
NSUInteger repeats = 1;
while (j + 1 < [theArray count] && [[theArray objectAtIndex:j + 1] isEqual:object]) {
j++;
repeats++;
}
[outArray addObject:object];
[outArray addObject:[NSNumber numberWithUnsignedInteger:repeats]];
}
return outArray;
如果输入数组是可变的,也可以这样做。我把它作为读者的练习。
答案 2 :(得分:0)
我不是Objective C程序员,所以请原谅任何语言失误。像下面这样的东西应该做的工作:
NSMutableArray *result = [[NSMutableArray alloc] init];
id pending = nil;
NSUInteger count = 0;
for (NSUInteger i = 0; i < [theArray count]; i++) {
id object = [theArray objectAtIndex:i];
if ([object isEqual:pending]) {
count++;
} else {
if (pending != nil) {
[result addObject:[NSString stringWithFormat:@"%@,%d", pending, count]];
}
pending = object;
count = 1;
}
}
if (pending != nil) {
[result addObject:[NSString stringWithFormat:@"%@,%d", pending, count]];
}
答案 3 :(得分:0)
从命令行运行“uniq -c”:)