我:交換價值
String a1 = "Hello";
String a2 = "World";
我想a2 becomes a1
和a1 becomes a2
即他們交換價值。
否則無需編寫一個函數:
a1 = "World";
a2 = "Hello";
要編寫能夠做到在迭代的最小數量的功能。
我:交換價值
String a1 = "Hello";
String a2 = "World";
我想a2 becomes a1
和a1 becomes 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
那麼這是什麼意思呢,我測試了兩種方法3,799,582次隨機放置和隨機文本消除第三個變量。然後我對這兩個數據集進行了t檢驗,發現我的方式或舊方式之間沒有顯着差異,關於時間延遲(Nano Seconds)。
時代確實有所不同,但可以肯定地說,我的方法不僅更短,而且速度也與舊方式一樣快。
根本不需要迭代。你根本就不需要這個循環。你的意思是*說明*? –
在'tmp'中存儲'a1'。指定'a1 = a2'。分配'a2 = tmp'。這是標準['swap'操作](https://en.wikipedia.org/wiki/Swap_(computer_science)#Using_a_temporary_variable)。 –
爲什麼@Amila不能看到我試過的東西?爲什麼鮑里斯不能在答案框中編寫解決方案?爲什麼安迪不明白這些意義?爲什麼downvoters不關心評論? – paul