Цель состоит в том, чтобы преобразовать 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"};
Согласно таблице кодов Хаффмана следующая битовая строка эквивалентна строке "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]
с самого начала.