それぞれ 3 文字の文字列を含む文字列配列があります。3 文字ごと (すべての要素) が一意の文字に対応します。文字列配列から char 配列を作成する必要があります。
これを行う唯一の方法は、文字列の配列内の各要素をループし、長い switch ステートメントを使用して関連する単一の文字を決定することです。
他にどのような方法でこれを達成できますか?
それぞれ 3 文字の文字列を含む文字列配列があります。3 文字ごと (すべての要素) が一意の文字に対応します。文字列配列から char 配列を作成する必要があります。
これを行う唯一の方法は、文字列の配列内の各要素をループし、長い switch ステートメントを使用して関連する単一の文字を決定することです。
他にどのような方法でこれを達成できますか?
マッピング/ルックアップの場合、通常はマップ/辞書が問題を解決します。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
。それでは、アスピリンを取り、静的マップを初期化するにはどうすればよいですか? を見てください。
必要なのは、文字列から文字へのHashmapマッピングだと思います
何語を使っていますか?
次のように、配列を使用してルックアップ テーブルを設定できます。
ルックアップテーブル = { {'a','abc'},{'b','abd'} ....}
次に、配列内の対応する値を検索するだけです。
あなたの言語が辞書をサポートしていれば、さらに簡単になります。
列挙型を使用して、要素と対応する文字を定義できます。次に、値を復号化するメソッドを用意します。
例:
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;
}
}