0

很抱歉标题,但我不知道能简要解释一下我需要做什么。

我有这个预定义的数组:

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

我们可以调用每一个字母Area。我们有一个变量NumberOfAreas,它保存一个从 0(null) 到 17 的整数值。这个值的含义是 this。如果NumberOfAreas= 5 那么我们有 string "A", "B", "C", "D", "E"。如果NumberOfAreas= 3,那么我们有"A", "B", "C",依此类推。该字符串始终以字母顺序开头"A"并遵循字母顺序。

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

想法是什么 - 如果我们有SkippedAreas数组 ="A", "C"NumberOfAreas= 5,或者我们必须通过跳过字母并添加接下来的两个字母"A", "B", "C", "D", "E"来保持NumberOfAreas等于 5,这样就变成了 - 。"A""C"NumberOfAreas"B", "D", "E", "F", "G"

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

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

4

1 回答 1

6

使用 LINQ

var FilteredAreas = 
    ListOfAreas.Where(a => !SkippedAreas.Contains(a)).Take(NumberOfAreas);
于 2013-04-01T19:10:39.633 回答