gpt4 book ai didi

c# - 在 List 中查找(并替换)相邻的相等/相似元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:08 25 4
gpt4 key购买 nike

我一直在尝试在 int 类型的列表中查找(并替换)相邻的相似(等值)元素。

在实现该计划时,我只记住了 1 个约束条件:- 即查找/替换彼此相邻的长度为=(或>)3的元素。

这是我所做的:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
public static void Main()
{
var list = new[] {2, 2, 2, 3, 3, 4, 4, 4, 4};
for (var i = 2; i < list.Length; i++)
{
if (list[i] == list[i - 1] && list[i] == list[i - 2])
{
list[i] = 0;
list[i - 1] = 0;
list[i - 2] = 0;
}
}

foreach(int item in list)
{
Console.Write(item);
}
Console.ReadKey();
}
}

我将所有相邻的相似/相等值替换为 0。但是有一个问题:如果重复值长度为 3/6/9 等,代码运行良好,如果重复数字的长度不是 3/6/9 等,它不会将数字的值更改为 0

如果运行该程序,您将看到以下输出:000330004(因为有 3 个 2,所以它工作正常,但是因为有 4 个 4,所以它忽略了最后一位并没有将其转换为 0)。

我需要什么:我了解正在发生的事情,以及为什么会发生。我似乎无法拥有它,因为我想让它工作。如果有人能告诉我该怎么做,我将不胜感激。谢谢。

最佳答案

这应该适用于任意数量的整数:

namespace Test
{
using System;
using System.Collections.Generic;

class MainClass
{
public static void Main (string[] args)
{
List<int> data = new List<int> ();
data.AddRange (new int[] { 2, 2, 2, 3, 3, 4, 4, 4, 4 });

int instance_counter = 0;
int previous_end = 0;
for (int i = 0; i < data.Count - 1; i++) {
instance_counter++;
if (data [i] != data [i + 1]) {
if (instance_counter > 2) {
for (int j = previous_end; j < i + 1; j++) {
data [j] = 0;
}
previous_end = i + 1;
}
instance_counter = 0;
previous_end = i + 1;
}
}
if (instance_counter > 2) {
for (int j = previous_end; j < data.Count; j++) {
data [j] = 0;
}
}
foreach (int x in data) {
Console.WriteLine (x);
}
}
}
}

关于c# - 在 List<int> 中查找(并替换)相邻的相等/相似元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com