Скажем, вы звоните removeChar("hello ", 'l')
,
, вы в настоящее время удаляете l
,
рекурсивно, звоните removeChar("helo ", 'l')
,
и просто возвращаете это напрямую.
Во-первых, это не так.оптимальный, потому что теперь он должен сканировать начальные he
символов, которые уже были отсканированы.
Во-вторых, не просто возвращайте его напрямую.Добавьте удаленное письмо до конца, прежде чем возвращать результат рекурсивного вызова.
Итак, вместо:
String newWord = word.substring(0, i) + word.substring(i + 1);
return removeChar(newWord, charToRemove);
Вы хотите:
String prefix = word.substring(0, i);
String remain = word.substring(i + 1);
String subst = removeChar(remain, charToRemove);
return prefix + subst + charToRemove;
Илитолько в одну строку:
return word.substring(0, i) + removeChar(word.substring(i + 1), charToRemove) + charToRemove;