右循环移位C#
如何在C#中进行右循环移位 我用这个函数做左循环移位 我的功能如下所示: 1100->按1移位=>1001 1100->按2移位=>0011 我需要另一个来做正确的循环移位? 1001->1班=>1100 等等右循环移位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
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);
}