力扣題目彙總(位1的個數,有效的字母異位詞,檢測大寫字母)

位1的個數

1.題目描述

  1. 編寫一個函數,輸入是一個無符號整數,返回其二進制表達式中數字位數爲 ‘1’ 的個數(也被稱爲漢明重量)。python

    示例 1:算法

    輸入:00000000000000000000000000001011
    輸出:3
    解釋:輸入的二進制串 00000000000000000000000000001011 中,共有三位爲 '1'。

    示例 2:api

    輸入:00000000000000000000000010000000
    輸出:1
    解釋:輸入的二進制串 00000000000000000000000010000000 中,共有一位爲 '1'。

    示例 3:數組

    輸入:11111111111111111111111111111101
    輸出:31
    解釋:輸入的二進制串 11111111111111111111111111111101 中,共有 31 位爲 '1'。

    提示:函數

    • 請注意,在某些語言(如 Java)中,沒有無符號整數類型。在這種狀況下,輸入和輸出都將被指定爲有符號整數類型,而且不該影響您的實現,由於不管整數是有符號的仍是無符號的,其內部的二進制表示形式都是相同的。
    • 在 Java 中,編譯器使用二進制補碼記法來表示有符號整數。所以,在上面的 示例 3 中,輸入表示有符號整數 -3

    進階:
    若是屢次調用這個函數,你將如何優化你的算法?優化

2.解題思路

用內置函數.count來計數

3.解題

class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        return bin(n).count('1')

有效的字母異位詞

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, 10,000],而且肯定爲偶數。
  2. 數組中數字的大小在範圍[-100,000, 100,000]內。

2.解題思路

1.長度不一樣確定不是相同的字母
2.去重後長度不同確定不一樣
3.集合S在集合T中的字母存在數數量不一樣就確定不一樣

3.解題

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

檢測大寫字母

1題目描述

  1. 給定一個單詞,你須要判斷單詞的大寫使用是否正確。get

    咱們定義,在如下狀況時,單詞的大寫用法是正確的:編譯器

    1. 所有字母都是大寫,好比"USA"。
    2. 單詞中全部字母都不是大寫,好比"leetcode"。
    3. 若是單詞不僅含有一個字母,只有首字母大寫, 好比 "Google"。

    不然,咱們定義這個單詞沒有正確使用大寫字母。

    示例 1:

    輸入: "USA"
    輸出: True

    示例 2:

    輸入: "FlaG"
    輸出: False

    注意: 輸入是由大寫和小寫拉丁字母組成的非空單詞。

2.解題思路

根據題意把1. 所有字母都是大寫,好比"USA"。
2. 單詞中全部字母都不是大寫,好比"leetcode"。
3. 若是單詞不僅含有一個字母,只有首字母大寫, 好比 "Google"。
表達出來
word==word.upper()
word==word.lower()
word == word.lower().capitalize()
知足其中一個便可,全部用OR連接

3.解題

class Solution:
    def detectCapitalUse(self, word: str) -> bool:
        return word==word.upper() or word==word.lower() or word == word.lower().capitalize()

`有更加好的思路,或者解題方法評論區留言謝謝

相關文章
相關標籤/搜索