Java-旋转字符串

描述

旋转字符串

给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)。
挑战
在数组上原地旋转,使用O(1)的额外空间

说明
原地旋转意味着你要在s本身进行修改。你不需要返回任何东西。

注意事项
offset >= 0
the length of str >= 0
Make changes on the original input data

样例

样例 1:

输入: str="abcdefg", offset = 3
输出: str = "efgabcd"
样例解释: 注意是原地旋转,即str旋转后为"efgabcd"
样例 2:

输入: str="abcdefg", offset = 0
输出: str = "abcdefg"
样例解释: 注意是原地旋转,即str旋转后为"abcdefg"
样例 3:

输入: str="abcdefg", offset = 1
输出: str = "gabcdef"
样例解释: 注意是原地旋转,即str旋转后为"gabcdef"
样例 4:

输入: str="abcdefg", offset =2
输出: str = "fgabcde"
样例解释: 注意是原地旋转,即str旋转后为"fgabcde"
样例 5:

输入: str="abcdefg", offset = 10
输出: str = "efgabcd"
样例解释: 注意是原地旋转,即str旋转后为"efgabcd"

代码

public class Solution {
    /**
     * @param str: An array of char
     * @param offset: An integer
     * @return: nothing
     */
    public void rotateString(char[] str, int offset) {
        if (str.length == 0){
            return;
        } 
        String t = "";
        for(int n = 0;n<str.length;n++){
            t+=str[n];
        }
        
        offset = offset%t.length();
        
        for(int i = 1;i<=offset;i++){
            t = t.charAt(t.length()-1)+t;
            t = t.substring(0,t.length()-1);
        }
        
        for(int n = 0;n<str.length;n++){
            str[n] = t.charAt(n);
        }
        
    }

}
posted @ 2020-04-22 09:51  两小无猜  阅读(829)  评论(0编辑  收藏  举报