码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】面试题15. 二进制中1的个数

时间:2020-05-26 15:32:04      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:字符串转换   while   ima   lang   src   进制转换   字符串   简单   +=   

题目:

技术图片

思路:

1、直观思路就是将十进制数转换成二进制后,统计二进制中1的个数。可以在转换过程中统计,也可以转换后将二进制字符串转换成int列表累加。
技术图片

2、基于位操作的方法更简单

  • 逐位判断: 利用与运算判断最右位是否为1,然后无符号右移
  • 利用n&(n-1)
    技术图片

代码:

Python

class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        # # 进制转换
        # count = 0
        # while n:
        #     count += n % 2
        #     n = n // 2
        # return count

        # # 逐位操作
        # count = 0
        # while n:
        #     count += n & 1
        #     n >>= 1
        # return count

        # 利用n&(n-1)
        count = 0
        while n:
            count += 1
            n &= n-1
        return count

相关问题

【LeetCode】面试题15. 二进制中1的个数

标签:字符串转换   while   ima   lang   src   进制转换   字符串   简单   +=   

原文地址:https://www.cnblogs.com/cling-cling/p/12965410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!