String Encoder с использованием множественной глобальной подстановки строк

1

Я пытаюсь написать простую схему кодирования. В качестве базового примера того, что мне нужно, скажем, есть строка 1001. Я хочу заменить 0 и 1 как

0 => 01

1 => 10

так что 1001 кодируется до 10010110.

Если бы я делал такую замену в редакторе, таком как vim, делая одну глобальную замену за другой, я бы сделал взломать, где я заменяю стартовые символы другими символами, не участвующими в подстановке (например, смена 0 на x и 1 на y). Таким образом, продукт первой замены защищен от последующих подстановок.

1001 => yxxy

yxxy => y0101y (я не хочу заменять 1, который получается из первой замены)

y0101y => 10010110

Обобщая n замену и делая это в коде, кажется, что прямой метод заключается в том, чтобы поместить строку в массив символов и сделать замену на ячейку. Тогда каждая замена не зависит друг от друга.

Для достаточно большой строки это может быть медленным. То, что я не знаю, - это то, что если общая строка заменяет методы или функции или apis быстрее, или если под капотом они также используют массив. Если нет специальной магии, позволяющей им делать замену миллиона символов в 1 операции, то это не имеет значения. Но если они быстрее, как я могу сделать общие замены для n случаев, защищая результаты от дальнейшей замены? Есть ли принятый алгоритм?

Затем оно будет распространяться на несколько строк регулярного выражения различного размера. Если мне пришлось заменить aba, cdee и т.д., Похоже, я не мог поместить целевую строку в контейнер данных логически. Заставляет ли такой кодер выходить за рамки простых строковых подстановок?

Теги:
string
encoding

1 ответ

0

До тех пор, пока вы не должны перекодировать в месте просто входной массив/строку/файл и выходной один. Чтение с ввода, перекодирования и записи на вывод. Таким образом, все замены будут выполняться за один проход.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню