首先,我很抱歉我的英语,我希望,至少,你能理解我的问题
用户可以输入不同的字母(例如),最多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:我知道输入数组的长度
答案 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];
}