編寫一個函數,輸入是一個無符號整數,返回其二進制表達式中數字位數爲 ‘1’ 的個數(也被稱爲漢明重量)。python
示例 1:算法
輸入:00000000000000000000000000001011 輸出:3 解釋:輸入的二進制串 00000000000000000000000000001011 中,共有三位爲 '1'。
示例 2:api
輸入:00000000000000000000000010000000 輸出:1 解釋:輸入的二進制串 00000000000000000000000010000000 中,共有一位爲 '1'。
示例 3:數組
輸入:11111111111111111111111111111101 輸出:31 解釋:輸入的二進制串 11111111111111111111111111111101 中,共有 31 位爲 '1'。
提示:函數
-3
。進階:
若是屢次調用這個函數,你將如何優化你的算法?優化
用內置函數.count來計數
class Solution(object): def hammingWeight(self, n): """ :type n: int :rtype: int """ return bin(n).count('1')
輸入: candies = [1,1,2,2,3,3] 輸出: 3 解析: 一共有三種種類的糖果,每一種都有兩個。 最優分配方案:妹妹得到[1,2,3],弟弟也得到[1,2,3]。這樣使妹妹得到糖果的種類數最多。
示例 2 :code
輸入: candies = [1,1,2,3] 輸出: 2 解析: 妹妹得到糖果[2,3],弟弟得到糖果[1,1],妹妹有兩種不一樣的糖果,弟弟只有一種。這樣使得妹妹能夠得到的糖果種類數最多。
注意:leetcode
1.長度不一樣確定不是相同的字母 2.去重後長度不同確定不一樣 3.集合S在集合T中的字母存在數數量不一樣就確定不一樣
class Solution: def isAnagram(self, s: str, t: str) -> bool: A = True if len(s) != len(t): A = False else: if len(set(s)) != len(set(t)): A = False else: for a in set(s): if s.count(a) != t.count(a): A = False break return A
給定一個單詞,你須要判斷單詞的大寫使用是否正確。get
咱們定義,在如下狀況時,單詞的大寫用法是正確的:編譯器
不然,咱們定義這個單詞沒有正確使用大寫字母。
示例 1:
輸入: "USA" 輸出: True
示例 2:
輸入: "FlaG" 輸出: False
注意: 輸入是由大寫和小寫拉丁字母組成的非空單詞。
根據題意把1. 所有字母都是大寫,好比"USA"。 2. 單詞中全部字母都不是大寫,好比"leetcode"。 3. 若是單詞不僅含有一個字母,只有首字母大寫, 好比 "Google"。 表達出來 word==word.upper() word==word.lower() word == word.lower().capitalize() 知足其中一個便可,全部用OR連接
class Solution: def detectCapitalUse(self, word: str) -> bool: return word==word.upper() or word==word.lower() or word == word.lower().capitalize()
有更加好的思路,或者解題方法評論區留言謝謝