Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
右循环移位C#_C# - Fatal编程技术网

右循环移位C#

右循环移位C#,c#,C#,如何在C#中进行右循环移位 我用这个函数做左循环移位 我的功能如下所示: 1100->按1移位=>1001 1100->按2移位=>0011 我需要另一个来做正确的循环移位? 1001->1班=>1100 等等 private string leftRotateShift(string key, int shift) { string res = ""; string[] result = new string[key.Length

如何在C#中进行右循环移位

我用这个函数做左循环移位

我的功能如下所示:

1100->按1移位=>1001 1100->按2移位=>0011

我需要另一个来做正确的循环移位? 1001->1班=>1100 等等

private string leftRotateShift(string key, int shift)
        {
            string res = "";
            string[] result = new string[key.Length];
            char[] a = key.ToCharArray();
            int index = 0;
            for (int i = shift; index < a.Length; i++)
            {
                result[index++] = a[i % a.Length].ToString();
            }
            res = string.Join("", result);
            return res;
        }
私有字符串leftRotateShift(字符串键,int移位)
{
字符串res=“”;
字符串[]结果=新字符串[key.Length];
char[]a=key.ToCharArray();
int指数=0;
for(int i=移位;索引
假设
0,我不确定右移和左移有什么不同。。。我想这和刚才的
shift
length shift
是一样的。你所说的“循环移位”通常被称为“旋转”。这个答案显示了如何进行左旋转:。搜索堆栈溢出,你会发现很多关于如何在C中执行此操作的问题,还有一两个关于C#的问题。另请看,这可能更接近你想要的。你的示例有点奇怪。我以为它是二进制的,但实际上它是一个字符串,所以我想知道为什么不使用“abcd”->“dabc”作为示例。这是有意为之,还是稍后将该字符串解析为值(如int)?与实际的位操作相比,将值转换为字符串并返回值的性能可能很差。
private string leftRotateShift(string key, int shift)
{
    shift %= key.Length;
    return key.Substring(shift) + key.Substring(0, shift);
}

private string rightRotateShift(string key, int shift)
{
    shift %= key.Length;
    return key.Substring(key.Length - shift) + key.Substring(0, key.Length - shift);
}