比较字符串与几个不同的字符串

use*_*334 3 c# string algorithm

我想比较一个字符串和许多字符串.怎么在C#中完成?

Dar*_*rov 10

如果要检查字符串列表中是否包含字符串,可以使用Contains扩展方法:

bool isStringContainedInList = 
    new[] { "string1", "string2", "string3" }.Contains("some string")
Run Code Online (Sandbox Code Playgroud)


Yon*_*oni 6

我建议您查看这篇维基百科文章,了解最常见的子字符串问题.

我从本科生那里回想起找到最长公共子串的一种策略,你可以先找到一个稍短的子串,然后从那里扩展(并重复).也就是说,如果"abcd"是一个公共子串,那么"abc"也是如此,"ab"也是如此.

这有助于重复算法,您首先找到字符串中出现的所有2个字母对(我不打扰一个字母子字符串,因为对于大型数据集,它们将包括整个字母表).然后你再次迭代找到所有3个字母的子串,依此类推......


Guf*_*ffa 5

要将集合中的所有字符串相互比较以查找重复项,使用字典是最有效的:

string[] strings = { "Zaphod", "Trillian", "Zaphod", "Ford", "Arthur" };

var count = new Dictionary<string, int>();
foreach (string s in strings) {
  if (count.ContainsKey(s)) {
    count[s]++;
  } else {
    count.Add(s, 1);
  }
}
foreach (var item in count) {
  Console.WriteLine("{0} : {1}", item.Key, item.Value);
}
Run Code Online (Sandbox Code Playgroud)

输出:

Zaphod : 2
Trillian : 1
Ford : 1
Arthur : 1
Run Code Online (Sandbox Code Playgroud)

您还可以使用 LINQ 方法来完成此操作:

var count =
  strings
  .GroupBy(s => s)
  .Select(
    g => new { Key = g.First(), Value = g.Count() }
  );
Run Code Online (Sandbox Code Playgroud)