2009-08-28 62 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

相关问题