Java 使用HashMap的稀疏数组
稀疏阵列 有一组输入字符串和一组查询字符串。对于每个查询字符串,确定它在输入字符串列表中出现的次数。 例如,给定输入字符串=['ab'、'ab'、'abc']和查询=['ab'、'abc'、'bc'],我们会找到'ab'的2个实例、'ab'的1个实例和'bc'的0个实例。对于每个查询,我们向返回数组中添加一个元素,result=[2,1,0] 我尝试了这个解决方案,但它只通过了3个测试用例Java 使用HashMap的稀疏数组,java,arrays,data-structures,collections,maps,Java,Arrays,Data Structures,Collections,Maps,稀疏阵列 有一组输入字符串和一组查询字符串。对于每个查询字符串,确定它在输入字符串列表中出现的次数。 例如,给定输入字符串=['ab'、'ab'、'abc']和查询=['ab'、'abc'、'bc'],我们会找到'ab'的2个实例、'ab'的1个实例和'bc'的0个实例。对于每个查询,我们向返回数组中添加一个元素,result=[2,1,0] 我尝试了这个解决方案,但它只通过了3个测试用例 static int[] matchingStrings(String[] strings, Strin
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;
}
静态int[]匹配字符串(字符串[]字符串,字符串[]查询){
int[]result_arr=new int[querys.length];
HashMap=newHashMap();
对于(int i=0;i当您的查询
数组具有重复值时,它将中断
因此,您应该为字符串数组创建hashmap,而不是为查询数组创建hashmap。这是因为对于每个查询,您需要检查字符串在字符串数组中存在的时间。
当前,如果查询
数组中存在重复值,则hashmap本身无法正确填充
以下是更新的代码:
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;
}
静态int[]匹配字符串(字符串[]字符串,字符串[]查询){
int[]result_arr=new int[querys.length];
HashMap=newHashMap();
对于(inti=0;i,在算法中使用以下输入:strings={“ab”,“ab”,“abc”}和querys={“ab”,“ab”}它输出2和0,但它必须是2和2,我认为@emil。谢谢,我得到了它。而不是(inti=0;i