0

それぞれ 3 文字の文字列を含む文字列配列があります。3 文字ごと (すべての要素) が一意の文字に対応します。文字列配列から char 配列を作成する必要があります。

これを行う唯一の方法は、文字列の配列内の各要素をループし、長い switch ステートメントを使用して関連する単一の文字を決定することです。

他にどのような方法でこれを達成できますか?

4

4 に答える 4

3

マッピング/ルックアップの場合、通常はマップ/辞書が問題を解決します。C# でのそのような構造の例:

string[] inList = new[]{"bee", "kay", "kay", "eff" }; 
Dictionary<string, char> mapping = new Dictionary<string, char> 
   { 
       {"bee", 'b'},
       {"eff", 'f'},
       {"kay", 'k'},
   };

そのようなマッピングがある場合は、マッピングから文字を検索するか、文字列のリスト全体を文字の配列に変換します。

char[] chars = inList.Select(s => mapping[s]).ToArray();

ほとんどすべての言語がこのタイプのデータ構造をサポートしていますが、最後のスニペットのような関数構造をすべてがサポートしているわけではありません。その場合、out 配列を構築するためのループが必要です。

編集:Javaタグを追加したのを見ました。Java でも同じことができます。そうすれば、辞書は Java になりますHashMap。それでは、アスピリンを取り、静的マップを初期化するにはどうすればよいですか? を見てください。

于 2013-10-10T18:48:30.953 に答える
3

必要なのは、文字列から文字へのHashmapマッピングだと思います

于 2013-10-10T18:49:07.040 に答える
2

何語を使っていますか?

次のように、配列を使用してルックアップ テーブルを設定できます。

ルックアップテーブル = { {'a','abc'},{'b','abd'} ....}

次に、配列内の対応する値を検索するだけです。

あなたの言語が辞書をサポートしていれば、さらに簡単になります。

于 2013-10-10T18:46:57.880 に答える
0

列挙型を使用して、要素と対応する文字を定義できます。次に、値を復号化するメソッドを用意します。

例:

public enum EncryptedValue {

    A ("A", "EDK"),
    B ("B", "CHI"),
    C ("C", "WAD"),
    ...;

    private String value;
    private String encryption;

    private static final List<EncryptedValue> VALUES = Collections.unmodifiableList(Arrays.asList(values()));

    private EncryptedValue(String value, String encryption) {
        this.value = value;
        this.encryption = encryption;
    }

    public String getValue() {
        return value;
    }

    public String getEncryption() {
        return encryption;
    }

    public String decrypt(Strign encryption) {
        for (EncryptedValue encryptedValue : VALUES) {
            if (encryptedValue.getEncryption().equalsIgnoreCase(encyrption))
                return encryptedValue.getValue();
        }

        return null;
    }

}
于 2013-10-10T19:13:23.780 に答える