i, am, nik, i am, i nik, am-6ren">
gpt4 book ai didi

c# - 使用 c# 查找集合(句子)的所有子集

转载 作者:行者123 更新时间:2023-12-04 23:32:50 24 4
gpt4 key购买 nike

如何使用 c# 查找集合的所有子集?这里 set 是一个句子(字符串)。例如:
s="i am nik";代码是什么?

这里 s 的子集将是-> i, am, nik, i am, i nik, am nik, i am nik。

最佳答案

这是我编写的一个函数,用于从给定数组中查找所有不连续的子集。

List<T[]> CreateSubsets<T>(T[] originalArray)
{
List<T[]> subsets = new List<T[]>();

for (int i = 0; i < originalArray.Length; i++)
{
int subsetCount = subsets.Count;
subsets.Add(new T[] { originalArray[i] });

for (int j = 0; j < subsetCount; j++)
{
T[] newSubset = new T[subsets[j].Length + 1];
subsets[j].CopyTo(newSubset, 0);
newSubset[newSubset.Length - 1] = originalArray[i];
subsets.Add(newSubset);
}
}

return subsets;
}

所以给定一个 1,2,3,4,5 的整数数组,它会返回一个 List<int[]>包含 31 个子集。

编辑:根据您的更新,您可以使用上述函数并在原始句子上使用 string.Split(' ') 生成所需的 6 个子集。考虑:
string originalString = "i am nik";
List<string[]> subsets = CreateSubsets(originalString.Split(' '));

foreach (string[] subset in subsets)
{
Console.WriteLine(string.Join("\t", subset));
}

关于c# - 使用 c# 查找集合(句子)的所有子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2650629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com