Переместить число в строку в рекурсивную строку - PullRequest
0 голосов
/ 01 мая 2020

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

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

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

Это код, который возвращает banana3:

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 Ответ

1 голос
/ 01 мая 2020

Сделайте то же самое, но начните с последнего символа и двигайтесь назад:

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