【问题标题】:Getting Time Limit Exceeded in Java even after using HashMap in "phone number query code"即使在“电话号码查询代码”中使用 HashMap 后,Java 中也会超出时间限制
【发布时间】:2022-01-01 08:01:20
【问题描述】:

给你一个电话簿,里面有人们的名字和他们的 电话号码。之后,您将获得某人的名字作为 询问。对于每个查询,打印该人的电话号码。

输入格式

第一行将有一个整数表示条目的数量 电话簿。每个条目由两行组成:名称和 对应的电话号码。

在这些之后,会有一些查询。每个查询将包含一个 人的名字。读取查询直到文件结束。

约束:人名仅由小写英文组成 字母,它可以是“名字姓氏”的格式,也可以是 格式“名字”。每个电话号码正好有 8 位数字 任何前导零。

输出格式

对于每种情况,如果此人在 电话簿。否则,打印此人的姓名和电话号码。看 准确格式的示例输出。

为了让问题更简单,我们在 编辑。您可以完成该代码或完全写在您的 拥有。

示例输入

3
uncle sam
99912222
tom
11122222
harry
12299933
uncle sam
uncle tom
harry

样本输出

uncle sam=99912222
Not found
harry=12299933

所以,我使用 HashMap 尝试了以下代码:

import java.util.*;
public class Solution
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        int q=sc.nextInt();
        sc.nextLine();
        HashMap<String,String> dic=new HashMap<>(q);
        for(int i=0;i<q;i++)
        {
            dic.put(sc.nextLine(),sc.nextLine());
        }
        
        while(sc.hasNext())
        {
           
            String s=sc.nextLine();
            int f=0;
            String ans="";
             for (Map.Entry<String, String> e : dic.entrySet())
            {
                if ((e.getKey()).equals(s))
                {
                    f=1;
                    ans=e.getKey()+"="+e.getValue();
                }    
            }
            if (f==1)
            System.out.println(ans);
            else
            System.out.println("Not found");
           
        }
    }
}

【问题讨论】:

  • 您尝试执行的这些测试用例是什么?
  • 它的私有测试用例。

标签: java arrays data-structures hashmap


【解决方案1】:

即使在使用 HashMap 时,您仍在迭代映射中的所有条目,这违反了使用哈希映射的目的。

使用containsKey检查地图是否有键,使用get获取值。这两个操作都是O(1)

....
String s = sc.nextLine();
if (dic.containsKey(s)) {
    System.out.println(s + "=" + s.get(s));
} else {
   System.out.println("Not found");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多