-3

如何使用 Shift 运算符 (>>) 移动字符串的字符,而不使用 Substring 和 IndexOf?

例如,我希望字符串中的每一秒字符向右(或向左)移动 1。

例如

每次迭代都应该将一个字符向右移动一次:

baeltazor
abeltazor
aebltazor
aelbtazor
aeltbazor
aeltabzor
aeltazbor
aeltazobr
aeltazorb

然后它将继续,直到每个字符都移动到字符串的末尾一次。

然后它将继续,直到每个字符都移动到字符串的末尾一次。

4

1 回答 1

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);
于 2013-06-27T21:09:13.743 回答