美文网首页
编写一个统计字符串中每个连续字符个数的函数,如 `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