Сдвиг числа к началу строки рекурсивно Java - PullRequest
0 голосов
/ 29 апреля 2020

Задача состоит в том, чтобы переместить число в строке в начало строки с помощью рекурсии. Поэтому, если я добавлю код «ba3nana», он должен вернуть «3banana». Уже выполнил несколько рекурсивных заданий, но на этом я застрял. Я попробовал, я думаю, уже 50 различных комбинаций, но пока мой код возвращает только «banana3», поэтому я go противоположным образом с моим номером. Кто-нибудь видит ошибку в моем коде?

Вызов метода выглядит следующим образом:

System.out.println(shiftDigitLeft("ba3nana"));

Это код на данный момент:

private static String shiftDigitLeft(String text) {
        if (text.isEmpty()) {
            return text;
        } else {
            if (text.charAt(0) >= '\u0030' && text.charAt(0) <= '\u0039') {
                return shiftDigitLeft(text.substring(1)) + text.charAt(0);
            } else {
                return text.charAt(0) + shiftDigitLeft(text.substring(1));
            }
        }
    }

Заранее спасибо!

1 Ответ

2 голосов
/ 29 апреля 2020

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

String shiftDigitLeft(String text) {
    if the text is empty
        return empty
    else
        if the first character is a digit
             return shiftDigitLeft(the rest of the string) + the digit
        else
             return the letter + shiftDigitLeft(the rest of the string)
}

Из этого должно быть очевидно, что цифры никогда не сдвигаются влево, только вправо.

Вам, вероятно, следует изменить свой подход, чтобы посмотреть, является ли символ последний ди git, и если это так, переместите его в начало.

...