都是简单题。主要看基础函数的熟练度,手速快不快。
给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。
请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。
如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。
如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。
如果 searchWord 不是任何单词的前缀,则返回 -1 。
字符串 S 的 「前缀」是 S 的任何前导连续子字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def isPrefixOfWord(self, sentence: str, searchWord: str) -> int:
A = sentence.split()
for i,x in enumerate(A, 1):
if x.startswith(searchWord):
return i
return -1
给你字符串 s 和整数 k 。
请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。
英文中的 元音字母 为(a, e, i, o, u)。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def maxVowels(self, s: str, k: int) -> int:
def f(x): return 1 if x in "aeiou" else 0
cur = sum(map(f, s[:k]))
ret = cur
for i in range(k,len(s)):
cur =cur + f(s[i]) - f(s[i-k])
ret = max(ret, cur)
return ret
给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。
请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pseudo-palindromic-paths-in-a-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def pseudoPalindromicPaths (self, root: TreeNode) -> int:
def f(x):
for i in range(1, 10):
if x == (1 << i):
return True
return True if x == 0 else False
ret = 0
def dfs(root, cur):
nonlocal ret
if not root.left and not root.right:
ret += f(cur ^ (1 << root.val))
return
if root.left:
dfs(root.left, cur ^ (1 << root.val))
if root.right:
dfs(root.right, cur ^ ( 1<< root.val))
if not root:
return 0
dfs(root, 0)
return ret
给你两个数组 nums1 和 nums2 。
请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。
数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。比方说,[2,3,5] 是 [1,2,3,4,5] 的一个子序列而 [1,5,3] 不是。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-dot-product-of-two-subsequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
# dp[i][j] = dp[i-1][j-1] + nums[i]*nums[j], dp[i-1][j], dp[i][j-1]
def maxDotProduct(self, nums1: List[int], nums2: List[int]) -> int:
n1, n2 = len(nums1), len(nums2)
dp = [[0]*(n1+1) for _ in range(n2+1)]
for i in range(n2):
for j in range(n1):
dp[i][j] = max(dp[i-1][j-1]+nums1[j]*nums2[i], dp[i-1][j], dp[i][j-1])
x1,x2,y1,y2 = min(nums1), max(nums1), min(nums2), max(nums2)
if x1*y1 < 0 and x2 * y2 < 0:
return max(x1*y2, x2*y1)
return dp[n2-1][n1-1]