0
私はハフマンツリーを構築していますが、文字列を入力として取り込み、それぞれの文字と元の文字列にその文字の出現数を含む2つの配列を作成する必要があります、次のように:出現をカウントして文字列から重複を取り除く
String s = "mississippi"
が生じるはずである:
char[] charArr = {'m','i', 's', 'p'};
int[] count = {1,4,4,2};
これとstackoverflowの上で、特にここでは、この問題を解決する方法の例の多くが、私は管理だけに関する質問がたくさんあります。仕事を得ることはこれでした:
private void findOccurences(String s) {
List<Character> original = new ArrayList<Character>(s.length());
List<Character> duplicateRemoved;
for (int i = 0; i < s.length(); i++) {
original.add(s.charAt(i));
}
duplicateRemoved = new ArrayList<Character>(original);
// Remove duplicates from second list.
Set<Character> hs = new HashSet<Character>();
hs.addAll(duplicateRemoved);
duplicateRemoved.clear();
duplicateRemoved.addAll(hs);
charFreqs = new int[duplicateRemoved.size()];
charArr = new char[duplicateRemoved.size()];
for (int i = 0; i < charArr.length; i++) {
char c = duplicateRemoved.get(i);
int count = Collections.frequency(original, c);
charArr[i] = c;
charFreqs[i] = count;
}
}
しかし、それは非常に混乱していると感じており、配列内の文字の並び順も変えてしまいます。これを使用すると、結果として得られる配列は次のようになります。
char[] charArr = {'p','s', 'i', 'm'};
私がしたいことを行うには、より良い方法がありますか?
HashMapを使用し、それはあなたの条件に合った場合にしようとそれを行います。 –