C# 返回第一个最长字符串,该字符串由c中数组中的n个连续字符串组成
我在采访中得到了这个问题: 我得到了一个字符串数组strarr和一个整数k。我的任务是返回第一个最长的字符串,该字符串由数组中的k个连续字符串组成 规则:n是字符串数组的长度,如果n=0或k>n或k则在LINQ中缺少用于删除重复项的.Distinct调用C# 返回第一个最长字符串,该字符串由c中数组中的n个连续字符串组成,c#,linq,C#,Linq,我在采访中得到了这个问题: 我得到了一个字符串数组strarr和一个整数k。我的任务是返回第一个最长的字符串,该字符串由数组中的k个连续字符串组成 规则:n是字符串数组的长度,如果n=0或k>n或k则在LINQ中缺少用于删除重复项的.Distinct调用 public static String LongestConsec(string[] strarr, int k) { string final = String.Join("", strarr.Distinct()
public static String LongestConsec(string[] strarr, int k)
{
string final = String.Join("",
strarr.Distinct() // Remove Duplicates
.OrderByDescending(s => s.Length) // Order by Length
.Take(k) // Take from List
);
return final;
}
修改后,您将获得预期的输出:
string target = LongestConsec(new string[] { "zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"}, 2);
// target = "abigailtheta"
但您仍然缺少已完成规则的IF案例:
如果n=0或k>n或k您在LINQ中缺少一个.Distinct调用来删除重复项
public static String LongestConsec(string[] strarr, int k)
{
string final = String.Join("",
strarr.Distinct() // Remove Duplicates
.OrderByDescending(s => s.Length) // Order by Length
.Take(k) // Take from List
);
return final;
}
修改后,您将获得预期的输出:
string target = LongestConsec(new string[] { "zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"}, 2);
// target = "abigailtheta"
但您仍然缺少已完成规则的IF案例:
与Smartis讨论后,如果n=0或k>n或k:
public static String LongestConsec(string[] strarr, int k) =>
String.Join("",
strarr.Distinct() // note: this won't change order
.Select((s, idx) => (s, idx)) // store initial index
.OrderByDescending(x => x.s.Length) // longest words first
.Take(k)
.OrderBy(x => x.idx) // restore original order
.Select(x => x.s));
与Smartis讨论后:
public static String LongestConsec(string[] strarr, int k) =>
String.Join("",
strarr.Distinct() // note: this won't change order
.Select((s, idx) => (s, idx)) // store initial index
.OrderByDescending(x => x.s.Length) // longest words first
.Take(k)
.OrderBy(x => x.idx) // restore original order
.Select(x => x.s));
这是你的作业还是我们的作业?这是你的作业还是我们的作业?你不能应用order by,因为它会更改此处的输出。像[xyz,Amit1234,mp]应该是XYZAMIT1234XYZ而不是Amit1234xyz。@AmitKumar哪里说排序很重要?@AmitKumar这是合理的期望,但OP没有提到。缺乏对问题的正确描述使问题变得困难。是的@AmitKumar是正确的。。我只想要那个输出。Cmon,Select into tuple,order by word,take,order back by initial index,string.Join。。没什么大不了的,您不能应用order by,因为它将更改此处的输出。像[xyz,Amit1234,mp]应该是XYZAMIT1234XYZ而不是Amit1234xyz。@AmitKumar哪里说排序很重要?@AmitKumar这是合理的期望,但OP没有提到。缺乏对问题的正确描述使问题变得困难。是的@AmitKumar是正确的。。我只想要那个输出。Cmon,Select into tuple,order by word,take,order back by initial index,string.Join。。没什么大不了的