美文网首页
编写一个统计字符串中每个连续字符个数的函数,如 `aaabbcc

编写一个统计字符串中每个连续字符个数的函数,如 `aaabbcc

作者: 穿山甲到底说了什么 | 来源:发表于2018-11-11 20:30 被阅读0次

    aaabbcccaabcd 输出为3a2b3c2a1b1c1d
    char_count(@"aaabbcccaabcd");

    //aaabbcccaabcd -> 3a2b3c2a1b1c1d
    NSString* char_count(NSString* str) {
        if (!str.length) return @"Please input a str";
        NSMutableDictionary *charRepeatCountDICTM = [NSMutableDictionary new];
        char lastChar = [str characterAtIndex:0];
        NSString *lastStr = [NSString stringWithFormat:@"%c", lastChar];
        charRepeatCountDICTM[[NSString stringWithFormat:@"%c", lastChar]] = @1;
    
        NSMutableString *readableStrM = [NSMutableString new];
        for (NSInteger i = 1; i < str.length; i++) {
            char curChar = [str characterAtIndex:i];
            NSString *curStr = [NSString stringWithFormat:@"%c", curChar];
            NSNumber *repeatValue = charRepeatCountDICTM[curStr];
            if (!repeatValue) {
                charRepeatCountDICTM[curStr] = repeatValue = @1;
            }
            if ((int)lastChar == (int)curChar) {
                NSInteger value = repeatValue.integerValue;
                charRepeatCountDICTM[curStr] = @(++value);
            } else {
                NSInteger lastRepeatCount = [charRepeatCountDICTM[lastStr] integerValue];
                [readableStrM appendString:[NSString stringWithFormat:@"%ld%c", lastRepeatCount, lastChar]];
                [charRepeatCountDICTM removeObjectForKey:lastStr];
            }
            lastChar = curChar;
            lastStr = [NSString stringWithFormat:@"%c", lastChar];
        }
        if (charRepeatCountDICTM.allKeys) {
            [readableStrM appendString:[NSString stringWithFormat:@"%ld%c", [charRepeatCountDICTM[lastStr] integerValue], lastChar]];
        }
        return readableStrM.copy;
    }
    

    相关文章

      网友评论

          本文标题:编写一个统计字符串中每个连续字符个数的函数,如 `aaabbcc

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