刚开始解决办法,i,j两个循环,遍历每个字符,想的是j = i +1,找到重复的就跳出循环执行第二个字符,;但是这样最终得到的是前面重复了后面没重复的数据,不是我们想要的。后来又考虑每个字符都全都遍历一遍整个数组,发现时间复杂度没有达到我们的预期,因为很多对比过的数据又重复比对。最终我想把比对过重复字符的用remove方法移除掉,等全部移除再也没有重复的时候,返回数组的第一个字符就是第一个不重复的。
NSString *str = @"qwrwqrqrqrwqwrql12e1e12ffw";
NSMutableArray * strArr = [NSMutableArray arrayWithCapacity:0];
// 遍历字符串,按字符来遍历。每个字符将通过block参数中的substring传出
[str enumerateSubstringsInRange:NSMakeRange(0, str.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
[strArr addObject:substring];
}];
NSString *m = @"";
int i =0;
do
{
i = 0;
m = strArr[0];
for(int j = 1 ; j < strArr.count; j++)
{
if([m isEqualToString:strArr[j]])
{
[strArr removeObject:m];
i = 1;
break;
}
}
}
while( i == 1);
NSLog(@"%@",strArr[0]);
欢迎指正。