ここにディレクトリのタイトルを書きます
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())