classSolution:defcanConstruct(self, ransomNote:str, magazine:str)->bool:
hashmap = defaultdict(int)for c in magazine:
hashmap[c]+=1for c in ransomNote:
hashmap[c]-=1if hashmap[c]<0:returnFalsereturnTrue
classSolution:deffourSum(self, nums: List[int], target:int)-> List[List[int]]:
result =[]
nums.sort()for i inrange(len(nums)):if i >0and nums[i]== nums[i-1]:continuefor j inrange(i+1,len(nums)):if j > i+1and nums[j]== nums[j-1]:continue
left = j+1
right =len(nums)-1while left < right:if(nums[i]+ nums[j]+ nums[left]+ nums[right]< target):
left +=1elif nums[i]+ nums[j]+ nums[left]+ nums[right]> target:
right -=1else:
result.append([nums[i], nums[j], nums[left], nums[right]])while left < right and nums[left]== nums[left+1]:
left +=1while left < right and nums[right]== nums[right-1]:
right -=1
left +=1
right -=1return result
classSolution:deffourSum(self, nums: List[int], target:int)-> List[List[int]]:
result =[]
nums.sort()for i inrange(len(nums)):if i >0and nums[i]== nums[i-1]:continuefor j inrange(i+1,len(nums)):if j > i+1and nums[j]== nums[j-1]:continue
left = j+1
right =len(nums)-1while left < right:if(nums[i]+ nums[j]+ nums[left]+ nums[right]< target):
left +=1elif nums[i]+ nums[j]+ nums[left]+ nums[right]> target:
right -=1else:
result.append([nums[i], nums[j], nums[left], nums[right]])while left < right and nums[left]== nums[left+1]:
left +=1while left < right and nums[right]== nums[right-1]:
right -=1
left +=1
right -=1return result