Создать int [] (специальный счетчик) в зависимости от строки [] - PullRequest
1 голос
/ 01 февраля 2011

Прежде всего, я сожалею о своем английском и надеюсь, по крайней мере, вы понимаете мою проблему

Пользователь может ввести разные буквы (например), максимум 6 букв, и он может повторить это Допустим, он вошел: A B C C A B B A A C C C C C Конечно, я могу поместить его в массив и упорядочить с помощью Arrays.sort (), и он будет выглядеть как

myArray = {A, A, A, A, B, B, B , C, C ,C, C, C ,C ,C}

Теперь мой вопрос: существует ли метод или алгоритм для создания массива счетчиков, который подсчитывает ASC до тех пор, пока буква не была изменена, а затем снова считает от 1 до следующего изменения

Мой желаемый массив будет выглядеть как

myCounter = {1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 6}

Заранее спасибо:)

PS: я знаю длину входного массива

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Если предположить, что arr - ваш входной массив, а result - ваш выходной массив, то что-то вроде этого должно работать нормально:

int counter = 1;
for(int i=0 ; i<arr.length ; i++) {
    if(i>0 && arr[i-1]!=arr[i]) {
        counter = 1;
    }
    result[i] = counter;
    counter++;
}
0 голосов
/ 01 февраля 2011

Это может делать то, что вы хотите (я не проверял):

int[] countArray = new int[arrayLength];
char lastChar = '\0';
int lastCount;
for (i = 0; i < arrayLength; i++) {
    if (chars[i] != lastChar) {
        lastCount = 0;
    }
    countArray[i] = ++lastCount;
    lastChar = chars[i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...