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

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

欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值