1

如何用 char 数组中的一个字符替换两个字符?让我再解释一下。我有一个长度为 char 的数组n。在这个 char 数组中,我想用指定索引中的一个字符替换两个字符i。在此过程中,数组长度将减少 1。
我想到的想法是,首先创建一个新的长度 char 数组,n-1然后将所有元素从索引复制0到索引ii不包括),然后在索引处插入所需的字符,i然后复制从索引i+2i包括)到索引的元素n-1。但是这个过程需要两次for循环。有没有更好的方法可以有效地做同样的事情。

4

4 回答 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 回答