【アルゴリズム】アルゴリズム質問-20231208

1. 有効な文字列

文字列と有効な単語のリストが取得されます (文字はすべて小文字です)。
文字列がリスト内の 1 つ以上の単語で構成されているかどうかを判断する関数を作成してください。

assert valid_word('hogwarts', ['hog', 'warts']) は True
assert valid_word('hogwarts', ['warts', 'warts'])は True
assert valid_word('hogwarts', ['war','ts', 'hog']) は True
assert valid_word('hogwarts', ['h','o','g','w','a','r','t','s']) は True
assert valid_word('hogwarts ', ['hog', 'wart']) は False
assert valid_word('hogwarts', ['hogw', 'warts']) は False

def valid_word(word, li):
    for item in li:
        word = word.replace(item, '')
    if len(word) == 0:
        return True
    else:
        return False


word = 'hogwarts'
li = ['war', 'ts', 'hog1']
res = valid_word(word, li)
print(res)

2. 最長の連続文字列の数を見つけます。

items=90000、key=0 戻り–> 4
items=“abcdaaadse”, key=“a” 戻り–> 3
items=“abcdaaadse”, key=“z” 戻り–> 0

def get_consective_items(items, key):
    count, tmp = 0, 0
    for i in str(items):
        if i != str(key):
            tmp = 0
            continue
        tmp += 1
        if tmp > count:
            count = tmp

    return count

items = "abcdaaadse"
key = "a"
res = get_consective_items(items, key)
print(res)

3. 229. 多数要素 II

提示
中等

サイズ n の整数配列が与えられた場合、 ⌊ n/3 ⌋ 回を超えて出現するすべての要素を見つけます。

示例 1:
输入:nums = [3,2,3]
输出:[3]

示例 2:
输入:nums = [1]
输出:[1]

示例 3:
输入:nums = [1,2]
输出:[1,2]

class Solution:
    def majorityElement(self, nums: List[int]) -> List[int]:
        d = {
    
    }
        for i in range(len(nums)):
            if nums[i] in d:
                d[nums[i]] += 1
            else:
                d[nums[i]] = 1
        k = int(len(nums)/3)
        ans = []
        for item in d.keys():
            if d[item] > k:
                ans.append(item)
        return ans

4. トップKの高周波素子

整数配列 nums と整数 k が与えられた場合、出現頻度が最も高い k 個の要素を返してください。回答は任意の順序で返すことができます。

示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]

示例 2:
输入: nums = [1], k = 1
输出: [1]

from collections import Counter
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        dic = Counter(nums)
        res = sorted(dic.items(), key=lambda item:item[1], reverse=True)
        return list(map(lambda x:x[0], res))[:k]



nums = [1,1,1,2,2,3]
k=2
res=Solution()
aa=res.topKFrequent(nums,k)
print(aa)

c=Counter(nums)
print(c.items())

Supongo que te gusta

Origin blog.csdn.net/YZL40514131/article/details/134863760
Recomendado
Clasificación