lintcode第八题:旋转字符串

此题链接:https://www.lintcode.com/problem/rotate-string/description?_from=cat

分析:

    1:暴力求解法,这是最容易想到的解法,思路是确定好转换的那个位置i,前面的字符整体向后推移出一个位置出来(k循环),空出来的位置储存该位置的字符串。

        解释:i为需要提到前面位置的字符,j位置储存i中的字符

   

void rotateString(string &str, int offset) {
        // write your code here
        int length=str.size();
        
        if(!offset||!length)
            return ;
        int offpos=offset%length;
        int j=0;
         char exchange;
        for(int i=length-offpos;i<length;i++)
        {
           exchange=str[i];
            for(int k=i;k>=j;k--)
            {
                str[k]=str[k-1];
            }
            str[j]=exchange;
            j++;
        }
    }

这个只需要0(1)的空间,但是时间复杂度还是蛮高的,中间的重复移动太多了,暂时还没想到好的方法去优化移动的步数,改天在更新。

posted @ 2019-05-26 20:20  CarrollTM  阅读(174)  评论(0)    收藏  举报