タイトル説明
左ローテート(ROL)と呼ばれるアセンブリ言語命令のシフトがあり、現在は簡単な作業であり、この命令は、文字列操作の結果によってシミュレートされます。指定された文字列Sの場合、あなたはKビットのシリアル出力した後、その左の円を入れました。例えば、文字列S =「abcXYZdef」は、三つ、即ち「XYZdefabc」後に必要な出力結果を左回転させました。それは単純ではないですか?OK、それを得ます!
1つのアイデア:部分文字列Stringクラス()メソッド撤回ストリングの使用
APIの連結を使用して、Stringクラス()文字列の連結を実装
String |
substring(int beginIndex, int endIndex)
これは、この文字列の子である文字列を返します。
|
String |
concat(String str)
指定された文字列は、文字列の端部に接続されています。
|
コード:
パブリッククラスのソリューション{ パブリック文字列LeftRotateString(文字列str、int型N){ IF(STR == NULL || str.length()== 0 || N <0 || N> str.length()){ 戻りSTR。 } 、N%= str.length()。 文字列STR1 = str.substring(0、N); 文字列STR2 = str.substring(N、str.length())。 str2.concat(STR1)を返します。 } }
2つのアイデア:
*フロントの1.最初の半分は反転
* 2。後半は再び逆転される
* 3。そして、文字列全体フリップ
*
文字列が反転した柔軟なデータベースを使用していません:*テストサイト
パブリッククラスのソリューション{ パブリック文字列LeftRotateString(文字列str、int型N){ IF(STR == NULL || str.length()== 0 || N <0 || N> str.length()){ 戻りSTR。 } のchar [] CH = str.toCharArray()。 reverseString(CH、O、N -1)。 reverseString(CH、N、str.length() - 1)。 reverseString(CH、0、str.length() - 1)。 新しいString(CH)を返します。 } 公共ボイドreverseString(CHAR [] CH、INT開始、INT端){ {(<エンド開始)しながら チャーTEMP = CH [開始]。 CH [開始] = CH [END]。 CH [END] = TEMP。 開始= 1 +始めます。 エンド=エンド- 1。 } } }
17ms:実行時間
メモリを取る:9668kを