class Solution:
def totalFruit(self, fruits: List[int]) -> int:
cnt=Counter()
left=ans=0
for right,x in enumerate(fruits):
cnt[x]+=1
while len(cnt)>2:
cnt[fruits[left]]-=1
if cnt[fruits[left]]==0:
cnt.pop(fruits[left])
left+=1
ans=max(ans,right-left+1)
return ans
官方题解,Counter():好用的计数器
class Solution:
def minWindow(self, s: str, t: str) -> str:
left=0
res=""
ans=float("inf")
s_cnt=Counter()
t_cnt=Counter(t)
def f (s_cnt,t_cnt):
for char in t_cnt:
if t_cnt[char] > s_cnt[char]:
return False
return True
for right in range(len(s)):
s_cnt[s[right]]+=1
while f(s_cnt,t_cnt):
if right-left+1<ans:
ans= right-left+1
res=s[left:right+1]
s_cnt[s[left]]-=1
left+=1
return res
困难题加1
难度主要在写f函数
s_cnt[s[left]]-=1不是s_cnt[left]-=1