lintcode刷题记录[java]

简单题8-旋转字符串

2018-05-08  本文已影响15人  Airycode

描述

给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
您在真实的面试中是否遇到过这个题? 是
样例

对于字符串 "abcdefg".

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

在数组上原地旋转,使用O(1)的额外空间
【代码实现】

package 数组和矩阵;

public class Main5 {

    public static void main(String[] args) {
        String str = "abcdefg";
        char[] c = str.toCharArray();
        int n = 30;
        rotateString(c, n);
    }

    public static void rotateString(char[] str, int offset) {
        // write your code here
        if (str == null || str.length == 0)
            return;

        int size = str.length;

        offset %= size;
        if (offset == 0)
            return;

        for (int i = 0; i < offset; i++)
            rotate(str);
        print(str);
        return;
    }

    private static void print(char[] str) {
        for (int i=0;i<str.length;i++) {
            System.out.print(str[i]+" ");
        }
        
    }

    public static void rotate(char[] str) {
        char temp = str[str.length - 1];

        for (int i = str.length - 1; i > 0; i--)
            str[i] = str[i - 1];

        str[0] = temp;
        return;
    }

}

上一篇下一篇

猜你喜欢

热点阅读