根据String []创建int [](特殊计数器)

时间:2011-01-31 23:41:19

标签: java arrays algorithm

首先,我很抱歉我的英语,我希望,至少,你能理解我的问题

用户可以输入不同的字母(例如),最多6个字母,他可以重复 假设他输入了:A B C C A B B A A 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 个答案:

答案 0 :(得分:2)

假设arr是你的输入数组,结果是你的输出数组,这样的东西应该可以正常工作:

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++;
}

答案 1 :(得分:0)

这可能会做你想要的(我还没有测试过):

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];
}