28
题目描述:
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例:
解答:
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
return haystack.find(needle)
535
题目描述:
TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk.
要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,并且这个TinyURL可以用解密方法恢复成原本的URL。
解答:
class Codec:
def encode(self, longUrl: str) -> str:
"""Encodes a URL to a shortened URL.
"""
return longUrl
def decode(self, shortUrl: str) -> str:
"""Decodes a shortened URL to its original URL.
"""
return shortUrl
# Your Codec object will be instantiated and called as such:
# codec = Codec()
# codec.decode(codec.encode(url))
1395
题目描述:
n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。
每 3 个士兵可以组成一个作战单位,分组规则如下:
从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]
作战单位需满足: rating[i] < rating[j] < rating[k] 或者 rating[i] > rating[j] > rating[k] ,其中 0 <= i < j < k < n
请你返回按上述条件可以组建的作战单位数量。每个士兵都可以是多个作战单位的一部分。
示例:
解答:
class Solution:
def numTeams(self, rating: List[int]) -> int:
sum=res1=res2=res3=res4=0 #直接三重循环一直超时
for j in range(1,len(rating)-1): #固定中间的数,前后的判断大小,然后组合
for i in range(j):
if rating[i]<rating[j]:
res1+=1
elif rating[i]>rating[j]:
res2+=1
for k in range(j+1,len(rating)):
if rating[j]<rating[k]:
res3+=1
elif rating[j]>rating[k]:
res4+=1
sum+=res1*res3+res2*res4
res1=res2=res3=res4=0
return sum
1720
题目描述:
未知 整数数组 arr 由 n 个非负整数组成。
经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。
给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。
请解码返回原数组 arr 。可以证明答案存在并且是唯一的。
示例:
解答:
class Solution:
def decode(self, encoded: List[int], first: int) -> List[int]:
res=[first]
for i in encoded:
res.append(i^res[-1])
return res
面试题目16.01
题目描述:
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。
示例:
解答:
class Solution:
def swapNumbers(self, numbers: List[int]) -> List[int]:
return [numbers[1],numbers[0]]