2011-01-31 7 views
1

まず依存ユーザーが(異なる文字を入力することができ、すべての文字列[]

をINT [](特別カウンター)を作成し、私は私の英語について申し訳ありませんと私は願っています少なくとも、あなたは私の問題を理解することができます、最大で6文字)たとえば、彼がそれを繰り返すことができ レッツは、彼が入ったと言う:もちろんABCCABBAACCCC は、私は、配列に入れては、Arrays.sort()を使用して、それを手配することができ、それは次のようになります

myArray = {A, A, A, A, B, B, B , C, C ,C, C, C ,C ,C} 
のような

さて、私の質問です:メソッドまたはアルゴリズムは、文字が変更されてから再度カウントされるまで、ASCをカウントするカウンタ配列を作成する方法はありますか? OM次の変更

私の希望の配列が

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

ようになるまでの1は、事前にありがとう:)

PS:私はARRと仮定すると、入力配列

答えて

2

の長さは知っていますあなたの入力配列と結果があなたの出力配列です、このような何かがうまくいくはずです:

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

ありがとう! –

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]; 
} 
関連する問題