首页 > 解决方案 > 如何在 2 个不同大小的字符串数组中查找所有可能的字符串组合

问题描述

我遇到了一个特殊的问题,经过长时间的搜索,我找不到任何解决方案。这是我的问题:

我有两个字符串数组:

   var arr1 = new[] { "UserId", "BookId", "BookStoreId", "Appid" };
   var arr2 = new[] {"Same", "Unique", "Repetitive"};

我希望 Result 具有所有可能的组合,例如:

结果(应为表格格式):

列 - UserId BookId BookStoreId Appid

行和列仅用于符号目的。

我希望我的问题现在很清楚。

我应该创造 64 个独特的组合。

我尝试了很多方法,包括笛卡尔积,但这并没有解决我的问题。

标签: c#arraysstringcombinationspermutation

解决方案


似乎你需要一个与重复的组合。检查这个答案https://stackoverflow.com/a/25824818/1007620

概括:

static IEnumerable<String> CombinationsWithRepition(IEnumerable<string> input, int length)
{
    if (length <= 0)
        yield return "";
    else
    {
        foreach(var i in input)
            foreach(var c in CombinationsWithRepition(input, length-1))
                yield return i + ',' + c;
    }
}

然后

string[] items = {"UserId", "BookId", "BookStoreId", "Appid", "Same", "Unique", "Repetitive"};
foreach (var c in CombinationsWithRepition(items, 4))
    Console.WriteLine (c);

结果https://pastebin.com/2hCbA1XJ


推荐阅读