タイトル説明
文字列の前の左回転操作は、文字列の転送の終わりにいくつかの文字列です。左回転操作関数文字列を達成するための関数を定義します。例えば、入力文字列「ABCDEFG」と番号2は、この関数は、左回転「cdefgab」を得た二つの結果を返します。
アイデア解析
二つの部分に分割された第1の受信N列は、2つの部分が裏返し、次いで、全体の文字列を反転さ
テストケース
- 官能試験:長さの文字列のN文字左回転0、1文字、2つの文字、N-1文字、文字N、N + 1文字。
- 特別なテスト入力:文字列ポインタを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() {
}
}