You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串重复字符统计的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:29:39