如何使用Shift运算符(>>)移动字符串的字符,而不使用Substring和IndexOf?
例如,我希望字符串中的每秒字符向右(或向左)移动1。
E.g。
每次迭代都应该将一个字符向右移动一次:
baeltazor
abeltazor
aebltazor
aelbtazor
aeltbazor
aeltabzor
aeltazbor
aeltazobr
aeltazorb
然后它会继续,直到每个角色都转移到字符串的末尾一次。
然后它会继续,直到每个角色都转移到字符串的末尾一次。
答案 0 :(得分:3)
最简单的方法是使用string.ToCharArray()
方法获取一个字符数组,然后在O(n)遍历中操作数组,然后通过ToString()
方法将其返回到字符串。操作字符串的效率非常低,因为字符串是不可变的,每次更改都会创建一个新的字符串对象。
向左或向左移动的示例:
var myString = "hello";
// Create char array
var myStringArray = myString.ToCharArray();
// Iterate the array of chars
for (int i = 0; i < myStringArray.Length; i++)
{
// Only every second index
if (i % 2 == 1)
{
// Swap chars
var tempChar = myStringArray[i];
myStringArray[i] = myStringArray[i-1];
myStringArray[i-1] = tempChar;
}
}
// String result
var result = new string(myStringArray);