将 aaabbcccaabcd
输出为3a2b3c2a1b1c1d
char_count(@"aaabbcccaabcd");
//aaabbcccaabcd -> 3a2b3c2a1b1c1dNSString* 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;}复制代码