【问题标题】:How to find the longest sequence of colors in C#如何在C#中找到最长的颜色序列
【发布时间】:2017-01-17 07:54:20
【问题描述】:

如何从以下最后 5 种颜色中计算出两种颜色的最长序列(使用 C#)?

var colorValues = new []{"Blue", "Yellow","Black","Yellow",
                         "Green","Yellow", "Yellow","Red"}

在上述预期序列中是“黄色”、“绿色”、“黄色”、“黄色”。

【问题讨论】:

  • 您可以使用基于 Jay Kadane 开发的算法解决Maximum subarray problem
  • @ZoharPeled 感谢您的快速回复,您有 c# 中的示例吗?
  • 不,我手头没有 c# 实现,但这不是一个很难实现的算法,您可能可以在网络上的某个地方找到它用 c# 实现。
  • 在给定示例中选择Green 并拒绝Black 的任何具体原因,即使它们的长度相同?
  • 对于一个可以说是一组要求家庭作业.

标签: c# linq logic sequence


【解决方案1】:

试试这个:

var colorValues = new[]
{
    "Blue", "Yellow", "Black", "Yellow",
    "Green", "Yellow", "Yellow", "Red"
};

var query =
    from n in Enumerable.Range(0, colorValues.Length)
    from l in Enumerable.Range(1, colorValues.Length - n)
    let subseq = colorValues.Skip(n).Take(l).ToArray()
    where subseq.Distinct().Count() == 2
    orderby subseq.Count() descending
    select subseq;

Console.WriteLine(String.Join(", ", query.First()));

它给出:

黄、绿、黄、黄

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 2020-12-15
    • 1970-01-01
    • 2020-03-04
    • 2019-06-12
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多