对不起标题,但我不知道如何热切地解释我需要做什么。
我有这个预定义的数组:
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的整数值。这个值的含义是这个。如果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"
,那么我们必须保持NumberOfAreas
等于5跳过字母"A"
和"C"
并添加接下来的两个字母,以便NumberOfAreas
变为 - "B", "D", "E", "F", "G"
。
我们只能跳过已经在NumerOfAreas
范围内的字母(区域),例如,如果我们在NumerOfAreas
= 5且字符串为"A", "B", "C", "D", "E"
时得到基本示例只能跳过5个字母中的一个字母。但是,通过跳过任何字母,我们会打开对下一行的访问权限,因此,如果我们第一次跳过"A"
,我们可以免费使用"F"
进行下一轮,如果"F"
是来自用户输入字符串SkippedAreas
然后跳过"F"
并打开"G"
是合法的。
我需要一种能够验证用户输入的算法。
答案 0 :(得分:6)
使用LINQ
var FilteredAreas =
ListOfAreas.Where(a => !SkippedAreas.Contains(a)).Take(NumberOfAreas);