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

C#数组相邻相同元素压缩计数:现有代码异常,求优化方案

相邻相同元素连续次数统计实现

给定集合:

List<int> Items = new List<int> { 0, 0, 1, 1, 0 };

需求是统计相邻相同元素的连续出现次数,输出格式为「值,计数」,期望输出:

0,2
1,2
0,1

正确实现代码

if (Items == null || Items.Count == 0)
    return;

int currentValue = Items[0];
int count = 1;

for (int i = 1; i < Items.Count; i++)
{
    if (Items[i] == currentValue)
    {
        count++;
    }
    else
    {
        Console.WriteLine($"{currentValue},{count}");
        currentValue = Items[i];
        count = 1;
    }
}

// 输出最后一组未处理的元素
Console.WriteLine($"{currentValue},{count}");

代码说明

  • 先判断集合是否为空,避免空引用异常
  • 初始化currentValue为集合第一个元素,count初始化为1
  • 从第二个元素开始遍历:
    • 若当前元素和currentValue相同,计数累加
    • 若不同,输出当前记录的「值,计数」,更新currentValue为当前元素,重置计数为1
  • 遍历结束后必须输出最后一组元素,因为循环仅在遇到不同元素时触发输出,最后一组无后续元素触发,需单独处理

原代码错误推测

你的错误输出缺少开头的0,2和结尾的0,1,大概率是以下问题导致:

  • 未从集合第一个元素开始初始化统计,直接从第二个元素开始处理
  • 遍历结束后没有输出最后一组元素
  • 计数逻辑混乱,导致统计的元素顺序和次数错误

内容的提问来源于stack exchange,提问作者Jonathan Barraone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:50:51