【发布时间】:2019-07-17 18:55:52
【问题描述】:
我想检查列表顺序是否正确,我的解决方案就在这里。
它有效,但它看起来又脏又蠢,有没有更好的灵魂可以做到这一点?
我加了两个例子来说明是case。
public enum HI
{
A,
B,
C
}
public class Test : MonoBehaviour
{
public void TestOroder()
{
// check hiList order ----> A >B >C
List<HI> hiList = new List<HI>() { HI.A, HI.B, HI.B, HI.B, HI.C , HI.C , HI.C };
//right
bool isRight = FindWorngOrder(hiList);
// check hiList order ----> A >B >C
List<HI> hiList2 = new List<HI>() { HI.A, HI.B, HI.C, HI.A ,HI.B, HI.B, HI.C };
//worng
bool isRight2 = FindWorngOrder(hiList);
}
public bool FindWorngOrder(List<HI> hiList)
{
bool haveWorngOrder;
for (int i = 0; i < hiList.Count - 1; i++)
{
HI current = hiList[i];
HI next = hiList[i + 1];
if (current == HI.C && next == HI.A ||
current == HI.C && next == HI.B)
{
return true;
}
if (current == HI.C && next == HI.B)
{
return true;
}
}
return false;
}
}
【问题讨论】:
-
请显示至少 6 个按正确顺序的输入和至少 6 个不正确的输入,以便我们理解您的意思。
-
@mjwills 我编辑了我的问题 :)
-
OrderBy进行排序,SequenceEqual进行比较。 -
已经回答here。
-
谢谢大家,我的@mjwills解决方案做得很好!!
标签: c#