[オファー] [58-2] [文字列]左回転

タイトル説明

  文字列の前の左回転操作は、文字列の転送の終わりにいくつかの文字列です。左回転操作関数文字列を達成するための関数を定義します。例えば、入力文字列「ABCDEFG」と番号2は、この関数は、左回転「cdefgab」を得た二つの結果を返します。

牛が質問がネットワークに対処はねのけます

アイデア解析

  二つの部分に分割された第1の受信N列は、2つの部分が裏返し、次いで、全体の文字列を反転さ
 

テストケース

  1. 官能試験:長さの文字列のN文字左回転0、1文字、2つの文字、N-1文字、文字N、N + 1文字。
  2. 特別なテスト入力:文字列ポインタをnullptrポインタです。

Javaコード

public class Offer058_02 {
    public static void main(String[] args) {
        test1();
        test2();
        test3();

    }

    public static String LeftRotateString(String str, int n) {
        return Solution1(str, n);
    }

    private static String Solution1(String str, int n) {
        
        if(str==null|| str.length()<=0) {
            return str;
        }
        if(n<=0 || n> str.length()) {
            return str;
        }
        char[] charArray = str.toCharArray();
        
        reverseCore(charArray, 0, n-1);
        reverseCore(charArray, n, charArray.length-1);
        reverseCore(charArray, 0, charArray.length-1);
        return String.valueOf(charArray);
    }
    
    private static void reverseCore(char[] s,int start,int end) {
        while(start<end) {
            char tmp = s[start];
            s[start] = s[end];
            s[end] = tmp;
            start++;
            end--;
        }
    }

    private static void test1() {

    }

    private static void test2() {

    }

    private static void test3() {

    }

}

コードリンク

安全コードを証明するためにオファー-Java

おすすめ

転載: www.cnblogs.com/haoworld/p/offer582-zuo-xuan-zhuan-zi-fu-chuan.html