使用 HashMap 的稀疏数组
Sparse Array using HashMap
稀疏数组
有一个输入字符串集合和一个查询字符串集合。对于每个查询字符串,确定它在输入字符串列表中出现的次数。
例如,给定输入字符串=['ab','ab','abc'] 和查询=['ab','abc','bc'] 我们发现'ab' 的 2 个实例,'ab' 的 1 个实例和 'bc' 的 0 个实例。对于每个查询,我们向 return 数组添加一个元素,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;
}
如果您的 queries
数组有重复值,它将中断。
因此,您应该为 strings
数组创建它,而不是为 queries
数组创建哈希图。这是因为对于每个查询,您需要检查该字符串在 strings
数组中出现了多少次。
当前,如果您的 queries
数组中存在重复值,则您的哈希图本身无法正确填充。
这是更新后的代码:
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<strings.length;i++)
{
if(map.containsKey(strings[i])) {
map.put(strings[i], map.get(strings[i])+1);
} else {
map.put(strings[i],1);
}
}
for(int i=0;i<queries.length;i++)
{
if(map.containsKey(queries[i]))
{
result_arr[i]+=map.get(queries[i]);
}
}
return result_arr;
}
稀疏数组
有一个输入字符串集合和一个查询字符串集合。对于每个查询字符串,确定它在输入字符串列表中出现的次数。 例如,给定输入字符串=['ab','ab','abc'] 和查询=['ab','abc','bc'] 我们发现'ab' 的 2 个实例,'ab' 的 1 个实例和 'bc' 的 0 个实例。对于每个查询,我们向 return 数组添加一个元素,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;
}
如果您的 queries
数组有重复值,它将中断。
因此,您应该为 strings
数组创建它,而不是为 queries
数组创建哈希图。这是因为对于每个查询,您需要检查该字符串在 strings
数组中出现了多少次。
当前,如果您的 queries
数组中存在重复值,则您的哈希图本身无法正确填充。
这是更新后的代码:
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<strings.length;i++)
{
if(map.containsKey(strings[i])) {
map.put(strings[i], map.get(strings[i])+1);
} else {
map.put(strings[i],1);
}
}
for(int i=0;i<queries.length;i++)
{
if(map.containsKey(queries[i]))
{
result_arr[i]+=map.get(queries[i]);
}
}
return result_arr;
}