LintCode 8. 旋转字符串

Posted zslhg903

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode 8. 旋转字符串相关的知识,希望对你有一定的参考价值。

题目:给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)。

样例

对于字符串 "abcdefg".

offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
挑战 

在数组上原地旋转,使用O(1)的额外空间

 解:先对offset处理,看是否超出字符串长度(offset=offset%len)。每次循环把最后一个字符取出来,然后把前面所有的字符往后挪一个位置,再将刚刚取出的那一个字符放回头部,循环处理后的offset次。

class Solution {
public:
    /*
     * @param str: An array of char
     * @param offset: An integer
     * @return: nothing
     */
    void rotateString(string &str, int offset) {
        // write your code here
        int temp;
        int len=str.size();
        if(len==0)
            return;
        offset=offset%len;//offset处理
        for(int i=0;i<offset;i++)
        {
            temp=str[len-1];//取出最后一个字符
            for(int j=len-1;j>=1;j--)
            {
                str[j]=str[j-1];//前面所有字符往后挪一位
            }
            str[0]=temp;//放回头部
        }
    }
};

 

以上是关于LintCode 8. 旋转字符串的主要内容,如果未能解决你的问题,请参考以下文章

LintCode刷题---旋转字符串

lintcode: 旋转图像

lintcode-寻找旋转排序数组中的最小值 java 需复习

LintCode Python 简单级题目 39.恢复旋转排序数组

lintcode:寻找旋转排序数组中的最小值 II

lintcode 170旋转链表