protected static int[] BuildBC(String P) {
//初始化
int[] BC = new int[CARD_CHAR_SET];//BC[]表
int j;
for (j = 0; j < CARD_CHAR_SET; j++)
BC[j] = -1;//首先假设该字符没有在P中出现
//自左向右迭代:更新各字符的BC[]值
for (j = 0; j < P.length(); j++)
BC[P.charAt(j)] = j;//P[j]曾出现在位置j——鉴于这里的扫描次序是从左到右(即下标递增),故只要某个字符ch在P中出现过,BC[ch]就会记录下其中的最靠右的出现位置
System.out.println("-- BC[] Table ---------------");
for (j = 0; j < CARD_CHAR_SET; j++)
if (0 <= BC[j]) System.out.print("\t"+(char)j);
System.out.println();
for (j = 0; j < CARD_CHAR_SET; j++)
if (0 <= BC[j]) System.out.print("\t"+BC[j]);
System.out.println("\n");
return(BC);
}