defisAnagram(self, s,t):
s_map,t_map ={},{}for c in s:if c in s_map:
s_map[c]+=1else:
s_map[c]=1for c in t:if c in t_map:
t_map[c]+=1else:
t_map[c]=1return s_map == t_map
中等
三数之和:
defthreeSum(self, nums):#Method1 dfs
nums.sort()
res =[]defdfs(first,cur,cumsum):iflen(cur)==3and cumsum ==0:
res.append(cur)for i inrange(first,len(nums)):if i>first and nums[i]==nums[i-1]:continueif cumsum+nums[i]>0:return
dfs(i+1,cur+[nums[i]],cumsum+nums[i])
dfs(0,[],0)return res
#Method2 hashtable
nums.sort()
res,d =set(),{}iflen(nums)<3:return[]for i,v inenumerate(nums):if v notin d:
d[v]=[i]else:
d[v].append(i)for i inrange(0,len(nums)):for j inrange(i+1,len(nums)):if-nums[i]-nums[j]in d:
ll = d[-nums[i]-nums[j]]for x in ll:if x!= i and x!=j:
res.add(tuple(sorted([nums[i],nums[j],-nums[i]-nums[j]])))
res =[list(x)for x in res]return res