Строковая функция Java - PullRequest
0 голосов
/ 15 мая 2011

Опишите следующие две функции и выполняют ли они одну и ту же задачу -

public int Jane1(String input, char aChar) {
    int count = 0;
    int index = input.indexOf(aChar);
    while (index >= 0) {
        count++;
        index = input.indexOf(aChar, index + 1);
    }
    return count;
}

public int Jane3(String input, char aChar) {
    int index = input.indexOf(aChar);
    if (index < 0) return 0;
    return Jane3(input.substring(index + 1), aChar) + 1;
}

Я думаю, что они не выполняют одну и ту же задачу, однако я не уверен в объяснении.Функция Jane3 использует рекурсивный вызов для возврата длины входных данных String, где Jane1 возвращает длину String.Изо всех сил пытаюсь разобраться в разнице между возвращением подстроки (которую я считаю результатом String) и индексом?

Ответы [ 4 ]

1 голос
/ 15 мая 2011

То, что я бы посоветовал вам сделать, это взять строку (придумать что-нибудь), а ручкой и бумагой проработать каждый метод.Например

Jane1("This is my homework", 'i');
Jane3("This is my homework", 'i');

И посмотрите, что вы получите.Вы будете работать через это, и оба дадут один и тот же результат, один с рекурсией, а другой с использованием цикла.Работа с ручкой и бумагой поможет вам понять это, и вы сможете объяснить своему лектору, чего пытается достичь каждый метод.

1 голос
/ 15 мая 2011

Они оба выполняют одну и ту же задачу.Посчитайте, сколько раз aChar появляется в input.Первый использует перегруженную версию indexOf и цикл для достижения результата.Вторая версия будет разбивать входные данные при первом появлении aChar и рекурсивно вызывать себя для второй половины.Результатом является целое число (0, если вхождение не происходит, или 1 + количество раз, когда символ был найден во второй половине).

PS: Почему бы вам не написать основной класс и не запустить / отладить оба этих метода для разных входных данных?Это лучший способ научиться ...

1 голос
/ 15 мая 2011

Jane1 использует цикл while, где Jane3 использует рекурсию.Это должно быть хорошим началом.Оба возвращают количество вхождений символа в строку.

1 голос
/ 15 мая 2011

Оба показывают одинаковый вывод:
1. Путь 1
2. Путь 2


PS: Вы пытались запустить код и проверить с помощью o / p?

...