String Leetcode 191-1位数-简单问题
问题:编写一个函数,该函数接受一个无符号整数,并返回“1”位的数目,它也称为汉明权重 输入示例:0000000000000000000000 1011。 产出:3 说明:输入二进制字符串0000000000000000000000 1011总共有三个“1”位 我的做法: 公共类解决方案 { } 我的输入:1011 我的产出:1 预期正确输出:3 我不明白为什么这个计算1个数的hashmap解决方案不起作用。有人能帮忙吗?试试这个:String Leetcode 191-1位数-简单问题,string,count,hashmap,char,bit,String,Count,Hashmap,Char,Bit,问题:编写一个函数,该函数接受一个无符号整数,并返回“1”位的数目,它也称为汉明权重 输入示例:0000000000000000000000 1011。 产出:3 说明:输入二进制字符串0000000000000000000000 1011总共有三个“1”位 我的做法: 公共类解决方案 { } 我的输入:1011 我的产出:1 预期正确输出:3 我不明白为什么这个计算1个数的hashmap解决方案不起作用。有人能帮忙吗?试试这个: int i = 0; HashMap<Character,
int i = 0;
HashMap<Character,Integer> hm = new HashMap<>();
while(i<s.length())
{
if(hm.containsKey(s.charAt(i)))
hm.put(s.charAt(i),hm.get(s.charAt(i))+1);
else
hm.put(s.charAt(i),1);
i+=1;
}
// System.out.println(hm.get('1'));
for (Map.Entry entry : hm.entrySet()) {
System.out.println("Key: " + entry.getKey() + " Value: " + entry.getValue());
}
输出:
注:你需要考虑以下几点:
将ifhm.containsKeyhm.geti替换为ifhm.containsKeys.charAti,因为键应该引用输入字符串第i个索引的字符。
替换hm.puts.charAti,hm.geti+1;使用hm.put.charAti,hm.get.charAti+1;因为我们首先从hashmap中获取第i个索引的值,然后增加它。
int i = 0;
HashMap<Character,Integer> hm = new HashMap<>();
while(i<s.length())
{
if(hm.containsKey(s.charAt(i)))
hm.put(s.charAt(i),hm.get(s.charAt(i))+1);
else
hm.put(s.charAt(i),1);
i+=1;
}
// System.out.println(hm.get('1'));
for (Map.Entry entry : hm.entrySet()) {
System.out.println("Key: " + entry.getKey() + " Value: " + entry.getValue());
}