右旋转C#

时间:2014-11-07 21:11:43

标签: c#

如何在C#中进行正确的循环移位?

我使用此功能进行左循环移位。

我的功能如下:

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

我需要另外一个做正确的循环转换吗? 1001 - > shift 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;
        }

1 个答案:

答案 0 :(得分:2)

假设0 <= shift,请尝试

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);
}