使用HashMap的稀疏数组

问题描述 投票:0回答:1

稀疏数组

有输入字符串的集合和查询字符串的集合。对于每个查询字符串,确定它在输入字符串列表中出现了多少次。例如,给定输入字符串= ['ab','ab','abc']和查询= ['ab','abc','bc'],我们发现2个实例'ab',1个'ab'和“ bc”的0。对于每个查询,我们在返回数组中添加一个元素result = [2,1,0]。

https://www.hackerrank.com/challenges/sparse-arrays/problem?isFullScreen=true

我尝试了此解决方案,但仅通过了3个测试用例。

static int[] matchingStrings(String[] strings, String[] queries) {
        int[] result_arr=new int[queries.length];
        HashMap<String,Integer> map=new HashMap<>();
        for(int i=0;i<queries.length;i++)
        {
            map.put(queries[i],i);
        }
        for(int i=0;i<strings.length;i++)
        {
            if(map.containsKey(strings[i]))
            {
                int index=map.get(strings[i]);
                System.out.println(index);
                result_arr[index]+=1;
            }
        }
        return result_arr;
    }
java arrays data-structures collections maps
1个回答
0
投票

问题在以下几行:

for(int i=0;i<queries.length;i++) {
    map.put(queries[i], i);
}

替换为

for(int i=0;i<queries.length;i++) {
    map.put(queries[i], 0);
}

为了用0而不是i的值初始化每个查询字符串的计数器。

© www.soinside.com 2019 - 2024. All rights reserved.