天天看點

關于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]);
複制代碼
           

歡迎指正。