0

Search and Replaceサブ配列を実行する必要があります。これは私のコードです

Dim IntegerArray() As Int32 = {1, 0, 2, 0, 0, 0,
                               1, 0, 2, 0, 0, 0, 
                               1, 0, 2, 0, 0, 0, 
                               0, 0, 0, 0}

具体的に2, 0, 0, 0, 1は、配列内の要素を検索し、それぞれを 1 から 5 に置き換える必要があります

ここに配列の写真があります

整数配列

どのようにsearch and replace仕事を遂行するのですか?

注: 配列をループしてみましたが、5 つの要素の値を特定するのは非常に難しく、今のところうまくいきません。ジョブを実行できる .NET 組み込み関数、またはそれに対するスマートなソリューションはありますか?

4

2 に答える 2

3

myArray は整数の配列です

解決

String.Join(";", myArray).Replace("2;0;0;0;1", "5;5;5;5;5").Split(';').Select(n => Convert.ToInt32(n)).ToArray()

説明

  • ステップ 1: int の配列を文字列に変換します (区切り文字として「;」を使用)
  • ステップ 2: 文字列の一部 ("2;0;0;0;1") を別の値 ("5;5;5;5;5") に置き換える
  • ステップ 3: 文字列を配列に戻す

    Split(';').Select(n => Convert.ToInt32(n)).ToArray() 
    
于 2012-08-03T12:59:41.037 に答える
2
    internal int[] Solve(int[] input, int[] pattern, int[] replace)
    {
        var result = new List<int>();

        for (int i = 0; i < input.Length; i++)
        {
            bool match = true;

            for (int j = 0; j < pattern.Length; j++)
            {
                if ((i + j >= input.Length) || (input[i + j] != pattern[j]))
                {
                    match = false;
                    break;
                }
            }

            if (match)
            {
                foreach (var item in replace)
                {
                    result.Add(item);
                }

                i += (pattern.Length - 1);
            }
            else
            {
                result.Add(input[i]);
            }
        }

        return result.ToArray();
    }
于 2012-08-03T13:43:37.783 に答える