将数字映射到字母

oJM*_*86o 5 c#

我有一个面试问题,问这个:

文本文件有以下行>

            1: A C D
            4: A B
            5: D F
            7: A E
            9: B C  
Run Code Online (Sandbox Code Playgroud)

*每一行都有一个唯一的整数,后跟一个冒号和一个或多个字母.这些字母是分隔的空格(一个或多个)>

                            #2 Write a short program in the language
Run Code Online (Sandbox Code Playgroud)

您选择的输出排序列表,如

            A: 1 4 7
            B: 4 9
            C: 1 9
            D: 1 5
            E: 7
            F: 5
Run Code Online (Sandbox Code Playgroud)

我不是在找人来解决它,但我总是对这样的问题感到困惑.我想在C#中这样做,并且想知道我应该将每一行存储在一个二维数组中吗?处理这个问题的最佳方法是什么.存储后,我如何用字母而不是数字重新连接每一行?

只是在这里寻找指针.

Fel*_*ano 0

我将使用 aDictionary<string,List<int>>我将读取输入并将 1 添加到键 A、C、D 的列表中,将 A 添加到键 A、B 等处,因此获得结果只是按字母查找。像这样,以一种非深奥的方式:

 string inp = @"1: A C D
            4: A B
            5: D F
            7: A E
            9: B C";
            Dictionary<string, List<int>> res = new Dictionary<string, List<int>>();
            StringReader sr = new StringReader(inp);
            string line;
            while (null != (line = sr.ReadLine()))
            {
                if (!string.IsNullOrEmpty(line))
                {
                    string[] tokens = line.Split(": ".ToArray(),StringSplitOptions.RemoveEmptyEntries);
                    int idx = int.Parse(tokens[0]);
                    for (int i = 1; i < tokens.Length; ++i)
                    {
                        if (!res.ContainsKey(tokens[i]))
                            res[tokens[i]] = new List<int>();
                        res[tokens[i]].Add(int.Parse(tokens[0]));
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

res 将包含字母 -> 数字列表的结果。