2009-08-28 46 views

回答

26
IEnumerable<string> GetAllStrings(params char[] inputCharacterSet) { 
    return from n in inputCharacterSet 
      from m in inputCharacterSet 
      from k in inputCharacterSet 
      select new string(new [] { n, m, k }); 
} 
+0

我會寫更多的優雅(3 for循環,吐出字符串到標準輸出:D) – mpen 2009-08-28 02:37:45

+0

這是正確的,所以我會折騰一點,但我認爲它可能更清晰,因爲嵌套for循環。 – 2009-08-28 02:38:07

+0

@Mark:LINQ肯定更漂亮,但鑑於這看起來像是一個家庭作業問題,我擔心這可能是矯枉過正。 – 2009-08-28 02:38:37

7
public IEnumerable<String> Get3CharStrings(char[] domain) 
{ 
    foreach(char a in domain) 
    foreach(char b in domain) 
     foreach(char c in domain) 
     yield return "" + a + b + c; 
} 

域內編輯:這實際上比LINQ溶液張貼由慢得多Mehrdad,雖然大部分區別在於使用return "" + a + b + c而不是return new string(new[] { a, b, c})

,實際的統計(26個字母,10K迭代:

邁赫達德代碼:72.983秒
我的代碼:127.205秒
我與邁赫達德的return語句代碼:75.055秒

+0

這比LINQ不那麼優雅,字母串聯的方式尤其難看。 – 2009-08-28 02:43:12

+1

Eh:它是可讀的,我期望jit-optimizer在這裏解決字符串聯合的常見問題。 – 2009-08-28 03:12:31

+0

@Joel:顯然不是。 – 2009-08-28 12:38:36

相關問題