0
我正在試圖在兩個字符串數組上執行SQL MINUS的等價操作。下面是我試圖複製代碼:我想改寫這個作爲對MINUS兩個字符串數組的Lambda表達式
string returnValue = "";
foreach (string eachWord in allWords)
{
foreach (string ignoreWord in ignoreWords)
{
if (eachWord != ignoreWord)
{
returnValue += eachWord;
}
}
}
:
returnValue = allWords.Minus(ignoreWords);
或者同樣簡潔。我意識到在幕後我會得到相同的代碼,但我只是迂腐!
在第e場景你將**不**得到相同的代碼。你的代碼是O(M * N),其中M是'allWords'的大小,N是'ignoreWords'的大小。使用更合適的算法(比如Linq的Except中使用的算法,你可以得到O(N + M),關鍵是將一個集合存儲在一個HashSet中,該集合有O(1)搜索,沒有嵌套循環,你有一個循環(添加項目設置),然後是另一個單一的循環(做搜索)。 – Servy 2012-07-23 19:41:39