У меня есть фрагмент кода, и я немного не понимаю, как решить мою проблему, поэтому ознакомьтесь с приведенным ниже методом. Я пытался найти решение, но, к сожалению, ни одно из них не соответствовало моим потребностям, поэтому я ищу здесь совета. Метод берет строку и удаляет повторяющиеся символы, например - ввод: ABBCDEF должен возвращать ABCDEF, но при вводе i+1 на последней итерации я получил исключение IndexOutOfBound Exception, поэтому я могу выполнять итерацию до string.length-1, но затем я теряю последний элемент, какое на ваш взгляд САМОЕ УМНОЕ решение, спасибо.
public String removeDuplicates(String source){
if(source.length() < 2){
return source;
}
StringBuilder noDuplicates = new StringBuilder();
char[] string = source.toCharArray();
for(int i = 0; i < string.length-1; i++){
if(string[i] != string[i+1]){
noDuplicates.append(string[i]);
}
}
return noDuplicates.toString();
}
Наиболее кратким решением, вероятно, будет
return source.replaceAll("(.)\\1+", "$1");
.