如何在Java中交换字符数组(就地)
因此,基本上没有能力/允许创建新阵列。无法返回任何内容,只能实际更改和操作当前数组。如何获取字符数组并简单地翻转/反转它们
Starting array: ['P','e','r','f','e','c','t',' ','M','a','k','e','s',' ','P','r','a','c','t','i','c','e']
将每个单词按空格倒回
Reversed: ['P','r','a','c','t','i','c','e',' ','M','a','k','e','s',' ','P','e','r','f','e','c','t']
这就是我目前所拥有的
代码:
class Main {
public static void main(String[] args) {
char[] charArr = new char[] {'P','e','r','f','e','c','t',' ','M','a','k','e','s',' ','P','r','a','c','t','i','c','e'};
reverseCharArray(charArr);
}
public static void reverseCharArray() {
int arrLength = charArr.length;
for (int i = 0; i <= arrLength / 2; i++) {
charArr[arrLength - i - 1] = charArr[i];
System.out.println(charArr);
}
}
}
更新: 好的,我发现的是。我需要做的是交换字符句子拼写的单词。使句子倒转强>
注意:这是在这里的一次在线采访中尝试的: enter link description here
# 1 楼答案
这肯定不是一个好的解决方案,但它是一个有效的解决方案
# 2 楼答案
下面的方法交换时间间隔。请注意,它们必须具有相同的长度
# 3 楼答案
假设您有以下数组
[h, e, y, , y, o, u]
你必须以一种模式工作;从外面到里面(或者反过来)。所以,[1,2,3,4,3,2,1]
你必须交换1
和1
,2
和2
等等。如您所见,此数组的长度为7,在本例中,所需的交换量正好为4(4
与其自身交换)。要计算交换量,只需将数组长度除以2.0f
即可现在您必须在数组中循环,交换这些索引。要计算要交换的索引,您必须在交换的位置进行检查。假设您在第二次交换,数组中
2
的索引是1和5,3
的索引是2和4。到现在为止,你可能已经认识到了这种模式。第一个索引始终是完成的交换量,其中第二个是数组长度减去1减去完成的交换量这是代码
EDIT:我刚才看到你要求将每个单词在一个字符[]中反转,你可能想在第一句话中澄清这一点
这样做;我建议您使用
String::split
将字符串拆分为字符串[],并使用String::toCharArray
将其更改为字符数组。虽然这会创建新的数组