说我有以下数组:
var arr = new[] { "A", "B", "C" };
Run Code Online (Sandbox Code Playgroud)
如何生成仅包含两个字符且不包含两个字符的所有可能组合(例如,AB将相同BA).例如,使用上面的数组会产生:
AB
AC
BC
Run Code Online (Sandbox Code Playgroud)
请注意,此示例已简化.数组和所需字符串的长度将更大.
如果有人可以提供帮助,我真的很感激.
让我们扩展它,所以也许我们可以看到模式:
string[] arr = new string[] { "A", "B", "C", "D", "E" };
//arr[0] + arr[1] = AB
//arr[0] + arr[2] = AC
//arr[0] + arr[3] = AD
//arr[0] + arr[4] = AE
//arr[1] + arr[2] = BC
//arr[1] + arr[3] = BD
//arr[1] + arr[4] = BE
//arr[2] + arr[3] = CD
//arr[2] + arr[4] = CE
//arr[3] + arr[4] = DE
Run Code Online (Sandbox Code Playgroud)
我在这里看到两个循环.
现在应该很容易将其转换为代码!
小智 5
这段代码
var strs = new[] {"A", "B", "C", "D"};
var combinations = CreateCombinations(0, "", strs);
var text = string.Join(", ", combinations);
private List<string> CreateCombinations(int startIndex, string pair, string[] initialArray)
{
var combinations = new List<string>();
for (int i = startIndex; i < initialArray.Length; i++)
{
var value = $"{pair}{initialArray[i]}";
combinations.Add(value);
combinations.AddRange(CreateCombinations(i + 1, value, initialArray));
}
return combinations;
}
Run Code Online (Sandbox Code Playgroud)
文本变量将包含
A, AB, ABC, ABCD, ABD, AC, ACD, AD, B, BC, BCD, BD, C, CD, D
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19757 次 |
| 最近记录: |