只包含字母吗?如果是的话,我的想法是创建一个 int[] equalTable = new int[26];
// java 默认初始化后全部为0.
int count = 0;//用于计数有多少个不同的等式,这里A=B, B=C,C=F, 属于同一个等
式。所以我们就把equalTable里A, B, C, F位置的index的值都设成某一个一样数字,
比如1。
然后扫描equal list,遇到一组等式比如 M = Z, 就看equalTable['M' - 'A' ] 和
equalTable['Z' - 'A' ] 是否都为0,如果是的话,
count++;
equalTable['M' - 'A' ] = count;
equalTable['Z' - 'A' ] = count;
如果有一个不为0,那么就把另一个为0的也设为这个非0值。
如果两个都不为0,且不相等,比如一个为2,一个为3,那么就把equalTable数组里全
部为2的都变成3(或者全部3都变成2也行)。
如果都不为0,且相等,不管,跳过。
然后扫描了一趟equal list后就得到一个大概长这样的table:
【1, 1, 2, 3, 2, 1, 0, 0, 0, 0, 1, 3, 3, 2 ....】.
然后再扫一遍not-equal那个list,看每个不等式,比如,W != Y, 在equalTable里
equalTable['W' - 'A' ] 和equalTable['Y' - 'A' ] 的数字是否相等,如果相等返回
有conflict。。
不知道对不对。