如何用char数组中的一个字符替换两个字符?让我解释一下。我有一个长度为n
的char数组。在这个char数组中,我想用指定索引i
中的一个字符替换两个字符。在此过程中,阵列长度将减少1
我想到的想法是,首先创建一个长度为n-1
的新char数组,然后将所有元素从索引0
复制到索引i
(i
除外)然后在索引i
处插入所需字符,然后将索引i+2
(i
包括)中的元素复制到索引n-1
。但是这个过程需要两次for
循环。有没有更好的方法可以以有效的方式做同样的事情。
答案 0 :(得分:5)
或者更有效的方法是使用StringBuilder,它是char []的包装器,让它为你做。
char[] chars = "Hello".toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(chars);
sb.replace(2, 4, "L");
System.out.println(sb);
打印
HeLo
您可以查看替换代码,看看它是如何做到的。
答案 1 :(得分:4)
使用System.arraycopy()复制数组部分,而不是迭代其元素。
答案 2 :(得分:2)
鉴于你想要一个新的数组对象,没有比复制每个数组元素更快的方法了,所以没有比这更有效的方法。如果您使用两次System.arraycopy()
调用,则不必自行编写循环。
如果你不需要一个新的数组对象,你可以将较高编号的数组元素向下移动一个,这只占副本数量的一半 - 但是你需要跟踪其他方式的长度。
答案 3 :(得分:-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