代码如下:(类似于编程之美的2.17,数组循环移位)


 static void Main(string[] args)
        {

            string input = "Hello World Welcome";
            char[] tempArray = input.ToCharArray();          

            string result = RightShift(tempArray, 0, tempArray.Length-1);         
        }

        public static string RightShift(char[] arrary, int startIndex, int endIndex)
        {
            Reverse(arrary, 0, endIndex);

            startIndex = endIndex = 0;

            while (startIndex < arrary.Length - 1)
            {
                if (arrary[startIndex] == ' ')
                {
                    startIndex++;
                    endIndex++;
                    continue;

                }
                else if (arrary[endIndex] == ' ')
                {
                    int currentIndex = endIndex;
                    Reverse(arrary, startIndex, endIndex - 1);
                    startIndex = endIndex = currentIndex;
                }
                else if (endIndex == arrary.Length - 1)
                {
                    int currentIndex = endIndex;
                    Reverse(arrary, startIndex, endIndex);
                    startIndex = endIndex = currentIndex;
                }
                else
                {
                    endIndex++;
                }
            }

            StringBuilder builder = new StringBuilder();
            foreach (char item in arrary)
            {
                builder.Append(item);
            }

            return builder.ToString();

        }

        public static void Reverse(char[] arrary, int start, int end)
        {
            while (start < end)
            {
                char temp = arrary[start];
                arrary[start] = arrary[end];
                arrary[end] = temp;

                start++;
                end--;
            }
        }

 

 

 

posted on 2013-12-17 12:28  higirle  阅读(679)  评论(0编辑  收藏  举报