我有一个文本文件,其中包含将近100000个条目。它们都有特定的模式,比如word1 word2 word3 word4
然而,这些条目中有许多是重复的,其中所有的单词都是相同的。当我试图读取并形成一个数组或唯一数组列表时,我使用一个中间散列集来执行此操作。而且效果很好。
但本质上我只想实现word2的唯一条目。如果word2是通用的,而其他的都是不同的,我想保留其中的任何一个条目。
例如cat dog lion tiger
cat dog deer bear
mouse rat bear deer
lion tiger cat dog
cat dog deer bear
在这种情况下,期望的输出是:cat dog lion tiger
mouse rat bear deer
lion tiger cat dog
或cat dog deer bear
mouse rat bear deer
lion tiger cat dog
当前哈希集给出的是:cat dog lion tiger
cat dog deer bear
mouse rat bear deer
lion tiger cat dog
如果数据集很大,关于如何有效实现这一点的任何建议。使用regex是这里唯一的选择吗?我在用c。
最佳答案
把数据翻一遍,把第二个词放进字典里,看看它以前是否出现过。
代码示例:
string[] file = { "cat dog lion tiger",
"cat dog deer bear",
"mouse rat bear deer",
"lion tiger cat dog",
"cat dog deer bear"};
Dictionary<string, string> dict = new Dictionary<string, string>();
List<string> lst = new List<string>();
foreach (string s in file)
{
string[] words = s.Split(' ');
// assumption - thare are at least 2 words in a line - validate it
if (!dict.ContainsKey(words[1]))
{
lst.Add(s);
dict.Add(words[1], words[1]);
}
}
foreach (string s1 in lst)
Console.WriteLine(s1);
关于c# - 根据C#中的子字符串获取唯一字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17769442/