Java альтернативная RLE-распаковка

109
02 июня 2021, 19:20

Есть метод, осуществляющий распаковку строки а-ля 2AB3C в AABCCC

private static String unpack(String s) {
        StringBuilder counter = new StringBuilder();
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
                counter.append(s.charAt(i));
            } else {
                int lim = counter.length() == 0 ? 1 : Integer.parseInt(counter.toString());
                for (int j = 0; j < lim; j++){
                    result.append(s.charAt(i));
                }
                counter = new StringBuilder();
            }
        }
        return (result);
    }

Как следует его изменить, чтобы получилось распаковывать строку, где число повторов указано за числом символов, а не перед ним, то есть A2BC3 в AABCCC?

Answer 1

Например так, запоминая последний не числовой символ, и добавляя его только после того как найден следующий не числовой символ:

private static String unpack(String s) {
    StringBuilder counter = new StringBuilder();
    StringBuilder result = new StringBuilder();
    String last = "";
    for (int i = 0; i < s.length(); i++) {
        if (Character.isDigit(s.charAt(i))) {
            counter.append(s.charAt(i));
        } else {
            fill(counter, result, last);
            counter = new StringBuilder();
            last = ""+s.charAt(i);
        }
    }
    fill(counter, result, last);
    return result.toString();
}
private static void fill(StringBuilder counter, StringBuilder result, String last) {
    int lim = counter.length() == 0 ? 1 : Integer.parseInt(counter.toString());
    for (int j = 0; j < lim; j++){
        result.append(last);
    }
}
READ ALSO
EditText изменение данных в модели и применение измененных данных MVP

EditText изменение данных в модели и применение измененных данных MVP

Моя реализация очень похожа на тот что в примере

103
Элементарный пример Retrofit2 JSON android studio

Элементарный пример Retrofit2 JSON android studio

Подскажите, пожалуйста, элементарный пример работы Retrofit2, в сети примеров куча, но все со своими подвохами

104
как на random расставить фигуры в шахматах javascript

как на random расставить фигуры в шахматах javascript

есть вот такой код и я хочу сделать так чтобы при нажатий на button фигуры расставлялись random, как это сделать ?

96
Выбрать первый и последний элемент родителя

Выбрать первый и последний элемент родителя

Пытаюсь найти подходящее решение, использую Slick SliderИмеется вот такое:

114