I'm very close on this. I got a question posed to me yesterday by a developer if I could have a look at this.
I feel close, but I think some people here would appreciate the challenge too and I am lost.
If I have a List<string>
which has the following members:
Today
Monday
Tuesday
Wednesday
I want to get a return string day
because this is the largest common string in the List<string>
. This should be done irrespective of position and string length, just want to find the largest length common string in a host of strings.
My attempt failed a bit miserably, I selected:
Monday - Tuesday
Monday - Wednesday
And then did an Intersect
between each. Obviously this would return multiple strings, however for Monday - Wednesday
you get nday
because that is what letters it has common.
Here is my code:
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()));
Anybody have a nice and neat solution?
NOTE
It doesn't have to be LINQ
If there isn't a common string, return null
or empty string.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…