编写一个统计字符串中每个连续字符个数的函数,如 `aaabbcccaabcd` 输出为`3a2b3c2a1b1c1d`...

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;
}
复制代码

转载于:https://juejin.im/post/5c19f761518825778a56e03a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值