Blue,Yellow,Green
中查找来自colorsToFind
的{{1}}序列
有没有人有一些指针来确定嵌套for循环的最佳方法,其中内循环需要确定的是一系列字符串包含在父循环中?
因此,对于下面的例子,因为" Blue"," Yellow"," Green"将在索引[5],[6],[7]中找到我想要返回那些索引。或者至少是[5]的第一个找到的索引。
我认为问题与colorList
循环如何突破已发现的索引有关。
for (int j
答案 0 :(得分:0)
当您要比较事件时,您正在测试相等性。
if (colorList[i].indexOf(colorsToFind[j]) != -1)
{
found = i;
break;
}
答案 1 :(得分:0)
string[] colorList = {"Royal Blue", "Tomato Red", "Mustard Yellow", "Midnight Blue", "Blue", "Blue", "Yellow", "Green", "Red", "Evergreen", "Purple", "Black", "Jet Black"};
string[] colorsToFind = "Blue,Yellow,Green".Split(',');
for (int i = 0; i < colorList.Length - colorsToFind.Length; i++)
{
int j; // we'll need this later
for (j = 0; j < colorsToFind.Length; j++)
{
if (colorList[j + i] != colorsToFind[j])
{
break; // stop if it doesn't match
}
}
// j for-loop was exited because j == colorsToFind.Length so a set matched
if (j == colorsToFind.Length)
{
Console.WriteLine(i);
break;
}
}
答案 2 :(得分:0)
for (int i = 0; i < colorList.Count -3; i++)
{
if (colorList[i] == colorsToFind[0] &&
colorList[i+1] == colorsToFind[1] &&
colorList[i+2] == colorsToFind[2])
{
found = i;
break;
}
}
for (int i = 0; i < colorList.Count - colorsToFind.count; i++)
{
for (int j = 0; j < colorsToFind.Count; j++)
{
bool match = true;
if (colorList[i+j] != colorsToFind[j])
{
match = false;
}
}
if (match)
{
found = i;
break;
}
}