将数组向左移动时不会跟随数字

问题描述 投票:-1回答:1

数字可以向左移动=>检查。

仅跟随数组中的第一个数字,其余的消失。现在的例子:

输入数组:1 2 3 4 5 6输入左移次数:3输出:4 5 6 1输出应如何:4 5 6 1 2 3

有人可以帮忙解决这个我找不到的简单解决方案。

var str = Console.ReadLine();
int shift = Convert.ToInt32(Console.ReadLine());
var strArray = str.Split(' ');
var x = strArray[0];

for (var i = 0; i < strArray.Length - shift; i++)
{
    strArray[i] = strArray[i + shift];
}

strArray[strArray.Length - shift] = x;

for (var i = 0; i <= strArray.Length - shift; i++)
{
    Console.Write(strArray[i] + ' ');
}
c# arrays shift
1个回答
0
投票

您可以使用Linq进行轮班,这是您可以使用的简单方法

    public int[] shiftRight(int[] array, int shift)
    {
        var result = new List<int>();
        var toTake = array.Take(shift);
        var toSkip = array.Skip(shift);

        result.AddRange(toSkip);
        result.AddRange(toTake);

        return result.ToArray();
    }
© www.soinside.com 2019 - 2024. All rights reserved.