如何用 char 数组中的一个字符替换两个字符?让我再解释一下。我有一个长度为 char 的数组n
。在这个 char 数组中,我想用指定索引中的一个字符替换两个字符i
。在此过程中,数组长度将减少 1。
我想到的想法是,首先创建一个新的长度 char 数组,n-1
然后将所有元素从索引复制0
到索引i
(i
不包括),然后在索引处插入所需的字符,i
然后复制从索引i+2
(i
包括)到索引的元素n-1
。但是这个过程需要两次for
循环。有没有更好的方法可以有效地做同样的事情。
问问题
3699 次
4 回答
5
或者更有效的方法是使用 StringBuilder ,它是 char[] 的包装器,让它为你做。
char[] chars = "Hello".toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(chars);
sb.replace(2, 4, "L");
System.out.println(sb);
印刷
HeLo
您可以查看替换代码以了解它是如何执行的。
于 2012-04-04T19:46:34.503 回答
4
使用System.arraycopy()复制数组部分,而不是遍历其元素。
于 2012-04-04T19:45:55.377 回答
2
鉴于您想要一个新的数组对象,没有比复制每个数组元素一次更快的方法了,所以没有比这更有效的方法了。如果您使用两次对 的调用System.arraycopy()
,则不必自己编写循环。
如果您不需要一个新的数组对象,您可以将编号较高的数组元素向下移动一个,这仅涉及副本数量的一半——但是您将需要跟踪一些长度另一种方式。
于 2012-04-04T19:46:13.143 回答
-1
它可以使用单个 for 循环。只需放入一个 IF 语句,指示您是否要替换迭代 (i) = 索引,然后执行不同的操作,而不仅仅是复制。
写在基础:
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 回答