美文网首页
关于OC解决“如何找到字符串中第一个不重复的字符”。

关于OC解决“如何找到字符串中第一个不重复的字符”。

作者: CRAZYBADAM | 来源:发表于2017-12-07 17:12 被阅读15次

刚开始解决办法,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]);

欢迎指正。

相关文章

网友评论

      本文标题:关于OC解决“如何找到字符串中第一个不重复的字符”。

      本文链接:https://www.haomeiwen.com/subject/cgqjixtx.html