c# - 数组中的所有元素是否满足由另一个字符串数组确定的特定条件

标签 c# arrays algorithm

对不起标题,但我不知道如何简要解释我需要做什么。

我有这个预定义数组:

string[] SkippedAreasArray = new string[] {"A", "B", "C", "D", "E", "F", "G",
            "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"};

我们可以称每个字母为区域。我们有一个变量NumberOfAreas,它保存一个从0(null)到17的整数值。这个值的含义是这样的。如果 NumberOfAreas = 5 那么我们有字符串 "A", "B", "C", "D", "E"。如果 NumberOfAreas = 3 那么我们有 "A"、"B"、"C" 等等。该字符串始终以 "A" 开头并遵循字母顺序。

用户输入是所谓的 SkippedAreas 数组。它可以包含随机字母,这些字母不能重复并且在 A-Q 范围内。

想法是什么 - 如果我们有 SkippedAreas 数组 = "A", "C"NumberOfAreas = 5 或 “A”、“B”、“C”、“D”、“E” 那么我们必须通过跳过字母 “A”来保持 NumberOfAreas 等于 5 "C" 并添加接下来的两个字母,使 NumberOfAreas 变为 - "B"、"D"、"E"、"F ", "G".

我们只能跳过已经在 NumerOfAreas 范围内的字母(区域),例如,如果我们在 NumerOfAreas = 5 时得到基本示例并且字符串是“A”、“B”、“C”、“D”、“E” 我们只能跳过这 5 个字母之一的字母。但是,通过跳过任何字母,我们可以打开对行中下一个字母的访问,因此如果我们第一次跳过 "A",我们可以在下一轮中自由使用 "F",并且如果 "F" 是用户输入字符串 SkippedAreas 的一部分,那么跳过 "F" 并打开 "G"< 是合法的

我需要一种能够验证用户输入的算法。

最佳答案

使用 LINQ

var FilteredAreas = 
    ListOfAreas.Where(a => !SkippedAreas.Contains(a)).Take(NumberOfAreas);

关于c# - 数组中的所有元素是否满足由另一个字符串数组确定的特定条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749935/

相关文章:

c# - 将 IEnumerables 的 IEnumerable 转换为字典

c# - Db.SaveChanges 在插入后不分配主键 ID - Code First Entity Framework

c# - 如何设置正确的日期时间格式?

c# - 将 LINQ Select 中的递归方法组转换为迭代方法

c - 以编程方式解决魔方

algorithm - 如何计算表面由三角形组成的 3D 网格下方的体积

algorithm - 算法中的步数

java - Java 字符串数组的内存使用情况

Python — 用设定数量的 1 随机填充二维数组

c++ - 什么是 C++ 数组中的初始化程序?