Удалить последнее вхождение подстроки

У меня есть массив строк и подстрока, мне надо удалить из всех строк в массиве последнее вхождение данной подстроки, я написал такой код, но не могу его закончить. Использовать другие коллекции нельзя, только массивы. Я примерно понимаю почему это не работает, но не понимаю как завершить решение, помогите пожалуйста.

public static String[] delete(String[] input, String substring) {
    Arrays.stream(input).forEach(e ->{
        StringBuilder sb = new StringBuilder(e);
        int lastIndex = e.lastIndexOf(substring);
        sb.delete(lastIndex, lastIndex + substring.length());
    });
    return input;
}

Update. Получилось решить задачу без использования стримов, теперь возник вопрос - можно ли сделать это эффективнее или элегантнее ?

public static String[] delete(String[] input, String substring) {
    for (int i = 0; i < input.length; i++) {
        StringBuilder sb = new StringBuilder(input[i]);
        int lastIndex = input[i].lastIndexOf(substring);
        if (lastIndex != -1) {
            if (input[i].length() == substring.length()) {
                input = ArrayUtils.remove(input, i);
            } else {
                sb.delete(lastIndex, lastIndex + substring.length());
                input[i] = sb.toString();
            }
        }
    }
    return input;
}

Ответы (0 шт):