Удалить последнее вхождение подстроки
У меня есть массив строк и подстрока, мне надо удалить из всех строк в массиве последнее вхождение данной подстроки, я написал такой код, но не могу его закончить. Использовать другие коллекции нельзя, только массивы. Я примерно понимаю почему это не работает, но не понимаю как завершить решение, помогите пожалуйста.
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;
}