Java 以最小迭代次数在两个字符串值之间交换值

Java 以最小迭代次数在两个字符串值之间交换值,java,swap,Java,Swap,我有: String a1 = "Hello"; String a2 = "World"; 我希望a2变成a1,a1变成a2,即它们交换值 在不编写函数的情况下执行到: a1 = "World"; a2 = "Hello"; 想要编写一个能以最少迭代次数完成的函数。因为String在Java中是不可变的, 不能更改a1和a2的值, 这个问题相当令人困惑 您可以做的是交换变量: String tmp = a1; a1 = a2; a2 = tmp; 但我怀疑这是一个练习,也许它的目的更像这样

我有:

String a1 = "Hello";
String a2 = "World";
我希望
a2变成a1
a1变成a2
,即它们交换值

在不编写函数的情况下执行到:

a1 = "World";
a2 = "Hello";

想要编写一个能以最少迭代次数完成的函数。

因为
String
在Java中是不可变的, 不能更改
a1
a2
的值, 这个问题相当令人困惑

您可以做的是交换变量:

String tmp = a1;
a1 = a2;
a2 = tmp;
但我怀疑这是一个练习,也许它的目的更像这样:

给定
char[]a1={“h”、“e”、“l”、“l”、“o”}
char[]a2=…
,在不重新分配这些变量的情况下,以最少的步骤交换它们的值

然后迭代数组的元素, 并执行逐字符交换,就像我之前对字符串所做的那样。

这里有一个解决方案:

a1 +=  a2;      
a2 = a1.replaceFirst(a2 + "$", "");
a1 = a1.replaceFirst("^" + a2, "");
还有一种方法:

x = new String[] { y, y = x }[0];
我测试了它,它和其他方法一样快。看一看:

data <- read.csv("~swapVars.csv")

dim(data)[1] #Size of dataset
# [1] 3799582

head(data) # Preview of data (Nano Seconds)
#    oldWay newWay
# 1     75     75
# 2     82     83
# 3     67     67
# 4     75     67
# 5     98     60
# 6     75     75

summary(data)
# oldWay             newWay       
# Min.   :      52   Min.   :     52  
# 1st Qu.:      60   1st Qu.:     60  
# Median :      60   Median :     60  
# Mean   :      84   Mean   :     78  
# 3rd Qu.:      67   3rd Qu.:     67  
# Max.   :16032716   Max.   :8381087  

t.test(data$oldWay, data$newWay)

# Welch Two Sample t-test
# 
# data:  data$oldWay and data$newWay
# t = 0.7796, df = 7237880, p-value = 0.4356
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
#   -9.516198 22.087260
# sample estimates:
#   mean of x mean of y 
# 83.96287  77.67734 

数据根本不需要迭代。你根本不需要一个循环。你是指说明吗?将
a1
存储在
tmp
中。分配
a1=a2
。分配
a2=tmp
。这是标准的。为什么@Amila看不到我试过什么?为什么Boris不能在答案框中写答案?为什么安迪不明白这个词的意思?为什么下层选民不愿意发表评论?因为这是一个“给我密码”的问题,表明你没有做出任何努力。这些“帮助吸血鬼”的问题冒犯了这里的一些人,其他人发现它们是获得廉价代表的完美工具。最终,没有人,特别是你,会因为人们为你做琐碎的工作而变得更好。祝你有快乐的一天。