我有一个面试问题,问这个:
文本文件有以下行>
Run Code Online (Sandbox Code Playgroud)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
我不是在找人来解决它,但我总是对这样的问题感到困惑.我想在C#中这样做,并且想知道我应该将每一行存储在一个二维数组中吗?处理这个问题的最佳方法是什么.存储后,我如何用字母而不是数字重新连接每一行?
只是在这里寻找指针.
我将使用 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 将包含字母 -> 数字列表的结果。