目标是使用 Huffman 代码表将 bitString 转换为纯文本,
r=000
h=001
o=01
w=100
d=1010
e=1011
l=11
我将霍夫曼代码表存储在两个不同的String[]
数组中:
String[] ch = {"r", "h", "o", "w", "d", "e", "l"};
String[] b = {"000", "001", "01", "100", "1010", "1011", "11"};
根据霍夫曼码表,下面的bitString等价于字符串“helloworld”。
String bits = "001101111110110001000111010";
现在我想遍历每组位以匹配其对应的字符:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < bits.length(); i++) {
if(bits.substring(0, b[i].length()).equals(b[i])) {
sb.append(ch[i]);
bits = bits.substring(b[i].length());
}
}
这里的问题是,每次找到匹配项时,我都找不到“重置”循环并返回的方法,b[0]
因此我可以b[i]
从头开始检查。