private compact_diff ( IList a, IList b ) : System.Collections.Generic.List |
||
a | IList | |
b | IList | |
return | System.Collections.Generic.List |
private IntList compact_diff(IList a, IList b)
{
IntList am, bm;
LCSidx(a, b, out am, out bm);
IntList cdiff = new IntList();
int ai = 0, bi = 0;
cdiff.Add(ai);
cdiff.Add(bi);
while (true)
{
while (am.Count > 0 && ai == am[0] && bi == bm[0])
{
am.RemoveAt(0);
bm.RemoveAt(0);
++ai;
++bi;
}
cdiff.Add(ai);
cdiff.Add(bi);
if (am.Count == 0) break;
ai = am[0];
bi = bm[0];
cdiff.Add(ai);
cdiff.Add(bi);
}
if (ai < a.Count || bi < b.Count)
{
cdiff.Add(a.Count);
cdiff.Add(b.Count);
}
return cdiff;
}