Я пытаюсь уменьшить последовательные элементы массива в один, но не для всех значений, таких как:Удалить конкретный последовательный элемент в массиве
{3,0,0,0,3,3,3,0,0,0} => {3,0,3,0}
но для одной конкретной, в моем примере 0:
{3,0,0,0,3,3,3,0,0,0} => {3,0,3,3,3,0}
так уменьшены только нули (троицы нетронутыми).
У меня есть Java Строка рабочий код я написал:
public static String removeConsecutive(String str, char remove) {
char[] chars = str.toCharArray();
int current = 0;
int result = current;
while (current < chars.length) {
if (chars[current] == remove) {
// keep the first occurrence
chars[result++] = chars[current++];
// ignore the others
while (current < chars.length && chars[current] == remove) {
++current;
}
} else {
chars[result++] = chars[current++];
}
}
return new String(chars, 0, result);
}
и делает трюк:
public static void main(String[] args) {
System.out.println(removeConsecutive("000300300030303330000", '0'));
}
выходы: 0303030303330
Можно ли предложить какие-либо улучшения, так как считаю, код не идеален.
Я думаю, что это хороший вопрос http://codereview.stackexchange.com – vidit
@vidit, спасибо. Я опубликую его на codereview и вставьте ссылку на эту дискуссию. – robosoul
'While' Loops - это потенциально бесконечные циклы. Избегайте их как можно больше. В этом случае вы можете заменить его операторами 'foreach'. –