一路面试题:AABCC输出为:A2B1C2
一道面试题:AABCC输出为:A2B1C2
#include <stdio.h> #include <stdlib.h> // A2B2C2A2 void deal( const char *pIn, char *pOut) { const char *tmpIn; char *tmpOut; char count; // 字符计数器 char preCh; // 前一个字符 char curCh; // 当前字符 tmpIn = pIn; tmpOut = pOut; count = '1'; preCh = *tmpIn; while (*tmpIn++) { curCh = *tmpIn; // 如果前一个字符与当前字符相等,则计数加1 if (preCh == curCh) { count++; } else {// 否则,说明出现不同字符,需要输出前一个字符及个数 // 这里是关键,保证是一个字符串!!! *tmpOut++ = preCh; *tmpOut++ = count; *tmpOut = 0; // 为下一个字符处理做准备 count = '1'; preCh = curCh; } } } int main(void) { char *pIn = "A"; char arr[20]; deal(pIn, arr); printf("%s\n", arr); return 0; }