char配列で2文字を1文字に置き換える方法は?もう少し説明させてください。長さのchar配列がありn
ます。このchar配列では、指定されたインデックスで2文字を1文字に置き換えたいと思いますi
。このプロセスでは、配列の長さが1減少します。
私が思いついたのは、最初に長さの新しいchar配列を作成し、n-1
次にすべての要素をインデックス0
からインデックスi
(i
除外)にコピーしてから、インデックスに目的の文字を挿入してからi
コピーすることです。インデックスi+2
(i
含む)からインデックスまでの要素n-1
。ただし、このプロセスには2回のfor
ループが必要です。同じことを効率的に行うことができるより良いアプローチはありますか?
質問する
3699 次
4 に答える
5
または、これを行うためのより効率的な方法は、char []のラッパーであるStringBuilderを使用して、それを実行させることです。
char[] chars = "Hello".toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(chars);
sb.replace(2, 4, "L");
System.out.println(sb);
プリント
HeLo
replaceのコードを見て、それがどのように行われるかを確認できます。
于 2012-04-04T19:46:34.503 に答える
4
要素を反復処理する代わりに、System.arraycopy()を使用して配列部分をコピーします。
于 2012-04-04T19:45:55.377 に答える
2
新しい配列オブジェクトが必要な場合、各配列要素を1回コピーするよりも高速な方法はないため、これよりも効率的な方法はありません。に2つの呼び出しを使用する場合System.arraycopy()
、ループを自分で作成する必要はありません。
新しい配列オブジェクトが必要ない場合は、番号の大きい配列要素を1つ下に移動するだけで、コピー数は半分になります。ただし、長さを追跡する必要があります。他の方法。
于 2012-04-04T19:46:13.143 に答える
-1
単一のforループを使用できます。反復(i)=置換するインデックスかどうかを示すIFステートメントを入力するだけで、コピーするだけでなく、別の操作を実行できます。
基本的に書かれています:
For i = 0 to n - 1
If i = x then
arrayCopy(i) = replaceChars
Else
arrayCopy(i) = arraySource(i)
End If
Next
于 2012-04-04T19:50:20.647 に答える