稀疏数组
有输入字符串的集合和查询字符串的集合。对于每个查询字符串,确定它在输入字符串列表中出现了多少次。例如,给定输入字符串= ['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;
}
问题在以下几行:
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
的值初始化每个查询字符串的计数器。