1657. 确定两个字符串是否接近
1657. 确定两个字符串是否接近
from collections import Counter
class Solution:
def closeStrings(self, word1: str, word2: str) -> bool:
if len(word1) != len(word2):
return False
if set(word1) ^ set(word2):
return False
word1 = Counter(word1)
word2 = Counter(word2)
if sorted(word2.values()) == sorted(word1.values()):
return True
return False
面试题 16.17. 连续数列
面试题 16.17. 连续数列
from typing import List
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
for i in range(1, len(nums)):
nums[i] = max(nums[i], nums[i] + nums[i - 1])
return max(nums)
LCP 23. 魔术排列
LCP 23. 魔术排列
模拟,详细解释一下K的来历
from typing import List
class Solution:
# k 只能是 len(最长公共前缀)
def isMagic(self, target: List[int]) -> bool:
if len(target) == 1:
return True
k = self.get_k(target)
if k == 0:
return False
if k == -1:
return True
range_times = len(target) // k + int(bool(len(target) % k))
check_list = [i + 1 for i in range(len(target))]
ans = []
for i in range(range_times):
check_list = self.magic_sort(check_list)
ans.extend(check_list[:k])
check_list = check_list[k:]
return ans == target
# print(k)
def magic_sort(self, nums):
new_nums = [nums[i] for i in range(len(nums)) if i % 2 == 1]
new_nums.extend([nums[i] for i in range(len(nums)) if i % 2 == 0])
return new_nums
def get_k(self, target):
new = self.magic_sort([i + 1 for i in range(len(target))])
for i in range(len(target)):
if target[i] != new[i]:
return i
return -1
720. 词典中最长的单词
720. 词典中最长的单词
class Solution:
def __init__(self):
self.word = ''
def longestWord(self, words: List[str]) -> str:
tree = {}
words.sort(key=lambda x: len(x))
for w in words:
level = tree
cnt = 0
c = 0
for c in range(len(w)):
next_level = level.get(w[c], None)
if next_level is None:
if c == len(w) - 1:
level[w[c]] = {}
break
level = next_level
cnt += 1
if c == len(w) - 1:
if len(w) > len(self.word):
self.word = w
elif len(w) == len(self.word) and w < self.word:
self.word = w
return self.word
2390. 从字符串中移除星号
2390. 从字符串中移除星号
class Solution:
def removeStars(self, s: str) -> str:
index = len(s) - 1
ans = ''
delete = 0
while index != -1:
if s[index] == '*':
delete += 1
else:
if delete > 0:
delete -= 1
else:
ans = s[index] + ans
index -= 1
return ans
Comments | NOTHING