我对此非常接近。如果我能看看这个,我昨天收到了一个由开发者给我提出的问题。查找字符串列表中的常见字符串
我觉得很接近,但我认为这里的一些人也会喜欢这个挑战,我迷路了。
如果我有具有以下成员的List<string>
:
今天
周一
周二
周三
我希望得到一个返回字符串day
,因为这是最大常见字符串中的List<string>
。这应该与位置和字符串长度无关,只需要在大量字符串中找到最大长度的常用字符串。
我尝试悲惨地失败了一点,我选择:
周一 - 周二
周一 - 周三
,然后做每一个之间的Intersect
。显然这将返回多个字符串,但是对于Monday - Wednesday
,您将获得nday
,因为这是它通用的字母。
这里是我的代码:
List<string> strs = new List<string>();
strs.Add("Monday");
strs.Add("Tuesday");
strs.Add("Wednesday");
var v = strs.SelectMany((day, i) => strs.Select((day2, j) => new
{
iDay = i,
Day = day,
iDay2 = j,
Day2 = day2
})).Where(x => x.iDay != x.iDay2).Select(x => new string(x.Day.Intersect(x.Day2).ToArray()));
人有一个很好的和巧妙的解决办法?
注意
它不必是LINQ
如果没有相同的字符串,返回null
或空字符串。
在我看来,一个不错的和整洁的解决方案不会涉及巨大的lambda表达式。并不一定会涉及Linq。 –
如果没有共同的字符串,结果如何?例如鲍勃,弗雷德,马克斯?或者周一,周二,比尔?即没有那么多列表中的所有项目共有的单个字符? –
@IlyaKogan不必是LINQ,这只是我的方法 - 标记它,因为这是我在问题中使用的。 – LukeHennerley