将 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;
}
网友评论