String Leetcode 191-1位数-简单问题

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,

问题:编写一个函数,该函数接受一个无符号整数,并返回“1”位的数目,它也称为汉明权重

输入示例:0000000000000000000000 1011。 产出:3 说明:输入二进制字符串0000000000000000000000 1011总共有三个“1”位

我的做法: 公共类解决方案

{

}

我的输入:1011

我的产出:1

预期正确输出:3

我不明白为什么这个计算1个数的hashmap解决方案不起作用。有人能帮忙吗?

试试这个:

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()); 
        }