encode method
Implementation
List<int> encode(List<int> input) {
if (input.isEmpty) return [];
final dict = <String, int>{};
for (var i = 0; i < 256; i++) {
dict['$i'] = i;
}
var code = 256;
final out = <int>[];
var w = <int>[input[0]];
for (var idx = 1; idx < input.length; idx++) {
final k = input[idx];
final wk = List<int>.from(w)..add(k);
final wkKey = wk.join(',');
final wKey = w.join(',');
if (dict.containsKey(wkKey)) {
w = wk;
} else {
out.add(dict[wKey]!);
dict[wkKey] = code++;
w = [k];
}
}
out.add(dict[w.join(',')]!);
return out;
}