3

たとえば、「Mass」などの文字列を受け取り、次のような出力を返すプログラムを終了する必要があります。

M:1 A:1 S:2

文字列パラメーターを 1 つだけ取り、Pair というオブジェクトの配列を返すメソッドを作成する必要があります。ペアオブジェクトは、上記の出力です。Pair の各要素には、文字とその文字の出現回数が含まれます。これはペアクラスです:

public static class Pair
    {
        public char _char;
        public int _occurances;

        public Pair(char c)
        {
            _char = c;
            _occurances = 0;
        }

    }

これは私が取り組んでいる方法です:

public Pair[] auditString(String input) {


    return Pairs;

}

「Mass」を入力し、メソッドがこのデータとペアの配列を返した場合、このメソッド auditString を機能させるにはどうすればよいですか。

ペア配列は3つのメモリ位置を生成します

要素 0 のペアには文字 m が 1 回出現し、要素 1 のペアには文字 a が 1 回出現し、要素 2 のペアには文字 s が 2 回出現します

4

3 に答える 3

1

これは宿題の質問なので、次の質問を検討してください。

  • 与えられた入力文字列をどのように分析しますか?明らかに、目的の結果を計算するには、各文字を確認する必要があります。
  • スコアをどのように追跡しますか?キャラクターに遭遇したときはいつでもPairオブジェクトを作成できますが、2回目にキャラクターに遭遇したときは、何をする必要がありますか?同じキャラクターのPairオブジェクトを再度取得するにはどうすればよいですか?または、キャラクターごとにペアオブジェクトを作成し、複数回発生するペアオブジェクトを使用して(つまり、同じキャラクターに対して)何かを実行して、実際の回答を計算する方法を見つけることもできます。
于 2012-07-05T21:55:57.123 に答える
1

これは宿題だと思っているので、直接的すぎる答えは避けようと思います。

この問題について私が考えることを提案する方法:

  • 文字列とは つまり、文字列は何で構成されていますか? 文字列は基本的に配列です。では、配列に数値の頻度を記録するよう求められた場合、この問題にどのように対処しますintか? この問題の解決策は論理的に同じです。

  • String の各「ピース」を 1 つずつ見ていくことを考えてみてください。このように文字の頻度を常に追跡できるように、「ペア」クラスをどのように利用できますか?

  • 訪問している各文字で、文字列の残りの部分を完全に無視していると想像してください。Pair クラスのどの機能 (具体的には一般的なオブジェクト) を使用すると、このようなわずかな「知識」で問題を解決できるでしょうか?

  • 混乱する場合は、最初は「ペア」オブジェクトを無視してください。まず、ロジックをダウンさせてみてください。頭の中で、または紙の上で論理的に解決策を考えることができれば、ペア オブジェクトの使用法は非常に明確になるはずです。

それがいくつか役立つことを願っています!

于 2012-07-05T21:59:28.383 に答える
0
public Pair[] GetLetterPairs(String str)
{
    HashMap<Character, Integer> map = new HashMap<Character, Integer>();

    str = str.toLowerCase();

    for(char c : str.toCharArray())
    {
        if(!map.containsKey(c))
            map.put(c, 1);
        else
        {
            int value = map.get(c);
            map.put(c, ++value);
        }
    }

    Pair[] pairs = new Pair[map.size()];
    int i = 0;
    for(Entry<Character, Integer> entry : map.entrySet())
    {
        pairs[i] = new Pair(entry.getKey(), entry.getValue());
        i++;
    }

    return pairs;
}
于 2012-07-05T22:16:47.293 に答える