zoukankan      html  css  js  c++  java
  • C#实现字符串左旋转操作

    竞赛题目及要求:

         定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。

         要求:对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。

    思路:

         如需对一个字符串“abcdef”进行前2个字符左旋转操作,将字符串“abcdef”分成两部分,“ab”和“cdef”,分别对“ab”和“cdef”进行反转操作,“ab”-->"ba","cdef"-->"fedc",     之后合并组成一个“bafedc”的字符串,再将“bafedc”进行发转操作,“bafedc”-->"cdefab","cdefab"就是“abcdef”左旋转两位的结果。

    代码实现:

         

     static void roll(StringBuilder strBuilder,int index,int n)
            {
    			
                for (int i = 0; i < n/2; i++)
                {
                    char temp = strBuilder[index+i];
                    strBuilder[index+i] = strBuilder[index+n-i-1];
                    strBuilder[index+n-i-1] = temp;
                }
                
            }
    
            /**
             * 对字符串str前index个数进行左旋转操作
             **/
            static void leftRotate(StringBuilder str,int index)
            {
                if (str.Length < index)
                {
                    Console.WriteLine("所要旋转的字符串个数大于字符串总个数");
                    return;
                }
                roll(str, 0, index);
                roll(str, index, str.Length - index);
                roll(str, 0, str.Length);
    
            }
            
    

      

  • 相关阅读:
    Python pip命令
    Linux extundelete命令
    Ruby Gem命令
    RPM包制作方法
    Openssl genpkey命令
    Linux ssldump命令
    openssl 证书操作命令
    Linux下使用openssl生成证书
    Volley框架载入网络图片
    Gmail上不去怎么办?
  • 原文地址:https://www.cnblogs.com/gracexu/p/2709013.html
Copyright © 2011-2022 走看看