我得到两个数组 byte[] a,和byte[] b,
我想判断a序列是否是b的一子序列,当然判断的时候必须把a看做一个整体,比方说
a={12,23,34,45},
b={23,45,12,23,34,45,54,12},
那么a就符合条件,如果
b={23,12,34,45,12}
那么a就不是b的子序列。有没有什么简单的方法来实现,或是用.net自由的类库来实现,
方法越简单越好,方法当然要有容错的能力。
我想判断a序列是否是b的一子序列,当然判断的时候必须把a看做一个整体,比方说
a={12,23,34,45},
b={23,45,12,23,34,45,54,12},
那么a就符合条件,如果
b={23,12,34,45,12}
那么a就不是b的子序列。有没有什么简单的方法来实现,或是用.net自由的类库来实现,
方法越简单越好,方法当然要有容错的能力。
byte[] b = new byte[] {23,45,12,23,34,45,54,12};for(int i = 0; i < b.Length; i++)
{
if (b.Skip(i).Take(a.Length).SequenceEqual(a))
{
Console.WriteLine("OK: 从b第"+ i.ToString() +"项开始符合条件");
break;
}
}
首行这个不可行,没有容错,例如:
int[] arrayone = new int[] { 21, 13, 24 };
int[] arraytwo = new int[] { 2, 113, 24, 50 };
判断其a数组第一个无素,在b中出现的位置.
开始进行循环比较
{
byte[] a ={ 23, 34, 45 };
byte[] b={23,45,12,23,34,45,54,12};
if (Encoding.ASCII.GetString(b).IndexOf(Encoding.ASCII.GetString(a)) >= 0)
{
MessageBox.Show("a就是b的子序列");
}
else
{
MessageBox.Show("a就不是b的子序列");
}
}
static void Main(string[] args)
{
int[] a = { 12, 23, 34, 45 };
int[] b = { 23, 45, 12, 23, 34, 45, 54, 12 }; var result = b.Except(a);
if (result.Count() > 0)
{
Console.WriteLine("a是b的子集");
}
else
{
Console.WriteLine("a不是b的子集");
} Console.ReadLine();
}