在最小迭代中交换两个String值之间的值

时间:2015-09-26 14:53:15

标签: java swap

我有:

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

我想要a2 becomes a1a1 becomes a2,即他们互换价值。

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

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

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

3 个答案:

答案 0 :(得分:3)

由于Error starting at line : 19 in command - INSERT INTO Employee (Eno, Ename, Zip, Hdate, Creation_Date,Created_by, Last_Update_Date, Last_Update_By ) VALUES (111111, "Man", '01234', 'Jan-10-1999','Jan-10-1999', "Hank", 'Jan-10-1999', "Hank") 在Java中是不可变的, 您无法更改Stringa1的值, 这个问题很混乱。

您可以做的是交换变量:

a2

但我怀疑这是一个练习,也许它更像是这样:

  

给定String tmp = a1; a1 = a2; a2 = tmp; char[] a1 = {"h", "e", "l", "l", "o"},在最小步数中交换它们的值,而不重新分配这些变量。

然后你将迭代数组的元素, 并按字符执行字符交换,就像我之前使用字符串一样。

答案 1 :(得分:0)

这是另一种方式:

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 

所以这意味着,我用随机放置和随机文本测试了两种方法3,799,582次以消除第三个变量。然后,我对两个数据集进行了t检验,发现我的方式或旧方式之间没有显着差异,关于时间延迟(Nano Seconds)。

时间确实有所不同,但可以肯定地说,我的方法不仅更短,而且也和旧方法一样快。

答案 2 :(得分:-2)

这是一个解决方案:

a1 +=  a2;      
a2 = a1.replaceFirst(a2 + "$", "");
a1 = a1.replaceFirst("^" + a2, "");