2019年11月9日 星期六

Rotate String II


Rotate String II

  • Lintcode : 1790 / Leetcode :
  • Level : Easy

Problem

Given a string(Given in the way of char array), a right offset and a left offset, rotate the string by offset in place.(left offest represents the offset of a string to the left,right offest represents the offset of a string to the right,the total offset is calculated from the left offset and the right offset,split two strings at the total offset and swap positions)。

Example
Example 1:

Input:str ="abcdefg", left = 3, right = 1
Output:"cdefgab"
Explanation:The left offset is 3, the right offset is 1, and the total offset is left 2. Therefore, the original string moves to the left and becomes "cdefg"+ "ab".
Example 2:

Input:str="abcdefg", left = 0, right = 0
Output:"abcdefg"
Explanation:The left offset is 0, the right offset is 0, and the total offset is 0. So the string remains unchanged.
Example 3:

Input:str = "abcdefg",left = 1, right = 2
Output:"gabcdef"
Explanation:The left offset is 1, the right offset is 2, and the total offset is right 1. Therefore, the original string moves to the left and becomes "g" + "abcdef".

Concept & Algorithm

Time Complexity & Space Complexity

time : O(n)
space: O(1)

Answer

class Solution {
public:
    /**
     * @param str: An array of char
     * @param left: a left offset
     * @param right: a right offset
     * @return: return a rotate string
     */
    string RotateString2(string &str, int left, int right) {
        int count = left - right;
        if (count == 0) return str;
        if (count > 0) {
            count %= str.size();
            string rotate = str.substr(0, count);
            string rest = str.substr(count);
            return rest + rotate;
        }else {
            count = abs(count);
            count %= str.size();
            string rotate = str.substr(str.size() - count, count);
            string rest = str.substr(0, str.size() - count);
            return rotate + rest;
        }
    }
};
tags: string

沒有留言:

張貼留言

Last Position of Target

Last Position of Target Lintcode : 458 / Leetcode : 34 Level : Easy Problem Find the last position of a target number in a sorted ...