0

我有一个字符串数组,每个字符串包含 3 个字母。每 3 个字母(每个元素)对应一个唯一的字母。我需要从字符串数组创建一个字符数组。

我能想到的唯一方法是遍历字符串数组中的每个元素,并使用长 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();

几乎所有语言都支持这种类型的数据结构,尽管并非所有语言都支持像最后一个片段这样的函数结构。在这种情况下,您需要一个循环来构建输出数组。

编辑:看到你添加了 java 标签。您可以在 java 中完成相同的操作,然后您的字典将成为HashMapjava 中的 a。因此,只需服用阿司匹林并查看如何初始化静态地图?

于 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

您可以使用 Enum 来定义您的元素和相应的字符。然后有一个解密该值的方法。

例子:

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 回答