码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode 8. 旋转字符串

时间:2018-01-27 00:46:55      阅读:482      评论:0      收藏:0      [点我收藏+]

标签:数组   return   pos   .com   bsp   位置   lint   超出   challenge   

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

样例

对于字符串 "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. 旋转字符串

标签:数组   return   pos   .com   bsp   位置   lint   超出   challenge   

原文地址:https://www.cnblogs.com/zslhg903/p/8361878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!