0

我有一条由紧密匹配的字符串组成的消息。我想从 message 中删除紧密匹配的字符串。接近我的意思是,如果两个字符串匹配到它们总长度的80%,那么其中一个应该被认为是重复的并被删除。

来自System.Linq;或类似策略的 distinct() 方法不会像我在下面实现的那样工作,因为即使是一个不匹配的字符。

string[] masg = {"Hello World","Hello World One","Hello-World","How are you","How are u"};

var distinctStr = masg.Distinct();
masg="";

foreach(string str in distinctStr)
    masg+=str+"~";

期望的输出

世界你好~你好吗

怎么做 。请提供我应该经历的想法或进一步的概念。谢谢。

4

1 回答 1

2

您首先需要做的是定义字符串之间的距离,例如使用Levenshtein distance。之后,您只需要遍历字符串,将它们添加到集合中,只要该集合不包含另一个距离低于您想要的距离的字符串。

于 2012-11-09T02:25:02.323 回答