字符串重复字符统计的C程序实现问题
字符串重复字符统计的C程序实现问题
嘿,我懂你要做啥啦!就是要写个C程序,把字符串里连续重复的字符按「次数+字符」的格式输出,还不想用太多索引变量对吧?这个问题其实用很简单的逻辑就能搞定,不用搞复杂的下标操作~
核心思路
咱们只需要两个关键变量:一个记录当前正在统计的字符,一个记录这个字符连续出现的次数。遍历字符串的时候,只要下一个字符和当前字符一样,就给计数器加一;一旦碰到不一样的字符,就把当前的计数和字符输出,然后切换当前字符为新的那个,计数器重置为1就行。最后别忘了输出最后一组字符,因为循环结束时最后一组还没打印出来哦!
简洁实现代码
#include <stdio.h> #include <string.h> int main() { // 这里可以替换成用户输入的字符串,或者用下面的方式读取输入 char input[] = "RRDDuuuRRRuuu"; int str_len = strlen(input); // 处理空字符串的特殊情况 if (str_len == 0) { printf("输入的字符串为空哦!\n"); return 0; } char current_char = input[0]; int repeat_count = 1; // 从第二个字符开始遍历,只用了一个索引变量i for (int i = 1; i < str_len; i++) { if (input[i] == current_char) { repeat_count++; } else { printf("%d%c ", repeat_count, current_char); current_char = input[i]; repeat_count = 1; } } // 输出最后一组连续字符 printf("%d%c\n", repeat_count, current_char); return 0; }
扩展:读取用户输入
如果需要让用户手动输入字符串,可以把上面的input初始化部分改成下面的代码,这样程序更灵活:
char input[100]; // 根据需求调整数组大小 printf("请输入要统计的字符串:"); fgets(input, sizeof(input), stdin); // 去掉fgets自动添加的换行符 input[strcspn(input, "\n")] = '\0';
这个实现只用了一个索引变量,完全符合你不想用太多索引的要求,逻辑也很直观,运行后输入RRDDuuuRRRuuu就能得到你想要的2R 2D 3u 3R 3u输出啦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

