c# - 收集 int 并根据它们的字符串在新行上打印它们
问题描述
我在这里询问如何读取一个字符串行,检查它是否包含在字典中,如果是,则添加一个数字。例如,如果输入是Gold并且下一行是115:应该将数字分配给字符串。每次循环旋转时,它都应检查是否包含字符串并将下一个int行添加到其中。
var text = new SortedDictionary<string, int>();
while (true)
{
for (int i = 0; i < 2000000000; i++)
{
string[] sequenceOfStrings = Console.ReadLine()
.Split();
var material = sequenceOfStrings[0];
if (material == "stop")
{
break;
}
if (!text.ContainsKey(material))
{
text.Add(material, i);
}
你得到一个字符串序列,每一个都在一个新的行上。控制台上的每一个奇数行都代表一种资源(例如金、银、铜等),每一个偶数代表一种资源。您的任务是收集资源并将它们分别打印在新行上。以以下格式打印资源及其数量:{resource} –> {quantity}。输入量将在[1 … 2 000 000 000]范围内
谢谢你的耐心。汤姆
解决方案
解决您的问题的代码可能如下所示:
var text = new SortedDictionary<string, int>();
while (true)
{
string material = Console.ReadLine();
if(material == "stop")
{
break;
}
string quantityString = Console.ReadLine();
if (!Int32.TryParse(quantityString, out int newQuantity))
{
continue;
}
if (text.TryGetValue(material, out int currentQuantity))
{
text[material] = currentQuantity + newQuantity;
}
else
{
text[material] = newQuantity;
}
}
foreach(var item in text)
{
Console.WriteLine($"{item.Key} : {item.Value};");
}
顺便说一句,你真的需要 SortedDictionary 吗?如果您有很多键,那么(取决于输入数据分布)执行TryGetValue可能比普通 Dictionary 花费更多时间。
推荐阅读
- node.js - 使用 Promise 获取 JSON 文件
- multithreading - 结构中带有变量的互斥锁
- java - Mockito 和 Spring 自动装配
- elasticsearch - Elasticsearch Java 多搜索 JSON
- sql-server - 为大量列创建动态 SQL
- rest - Symfony 4 RESTful API 路由适用于 PHP 内置服务器,但不适用于 XAMPP
- r - 如何根据数据框值更改邻接矩阵的权重?
- python - fitbit API HTTPS 错误
- salesforce - 您可以在 DocuSign Recipient.Name 变量的名字和姓氏之间添加一个空格吗?
- emacs - Emacs 和 Slime 启动脚本