from collections import Counter:
from collections import Counter
str = './root//users/yanti/'
res = str.split('/')
print(res)
a = Counter('leetcode')
print(a) #Counter({'e': 3, 't': 1, 'd': 1, 'o': 1, 'l': 1, 'c': 1})
print(a['e']) #3
print(len(a)) #6
for k,v in a.items():
print(k,v)
# t 1
# d 1
# c 1
# l 1
# e 3
# o 1
for k in a.keys():
print(k)
# e
# l
# o
# c
# t
# d
print('a' in a) #False
print('e' in a) #True
from collections import defaultdict:
from collections import defaultdict
#dic中放一个默认的整数
dic1 = defaultdict(lambda:1900)
dic1['a'] += 1
dic1['b'] += 2
print(dic1) #defaultdict(<function <lambda> at 0x10d265488>, {'a': 1901, 'b': 1902})
#快速build一个trie树
words = ['abc','ac','ab']
add_child = lambda:defaultdict(add_child)
trie = defaultdict(add_child)
for word in words:
cur = trie
for ch in word:
cur = cur[ch]
cur["$"] = word
print(trie) #defaultdict(<function <lambda> at 0x1026a3598>, {'a': defaultdict(<function <lambda> at 0x1026a3598>, {'c': defaultdict(<function <lambda> at 0x1026a3598>, {'$': 'ac'}), 'b': defaultdict(<function <lambda> at 0x1026a3598>, {'$': 'ab', 'c': defaultdict(<function <lambda> at 0x1026a3598>, {'$': 'abc'})})})})
#查找某个词是否在Trie中
def search(root, word):
node = root
for ch in word:
if (ch in node):
node = node[ch]
else:
return False
return "$" in node
print(search(trie, "bc")) #False
print(search(trie, "abc")) #True
#defaultdict和原生dict的setdefault操作是一致的,而defaultdict的实现会快,例如以下codes也是一样的trie树
trie2 = {}
for word in words:
cur = trie2
for ch in word:
cur = cur.setdefault(ch,{})
cur["$"] = word
print(trie2) #{'a': {'c': {'$': 'ac'}, 'b': {'$': 'ab', 'c': {'$': 'abc'}}}}
from itertools import permutations
from itertools import permutations
perms = permutations('123',2)
for perm in perms:
print(perm)
# ('1', '2')
# ('1', '3')
# ('2', '1')
# ('2', '3')
# ('3', '1')
# ('3', '2')
from functools import lru_cache:
#dfs的时候非常好使
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
print(fib(5)) #5
print(fib.cache_info()) #CacheInfo(hits=29, misses=16, maxsize=None, currsize=16)
from functools import reduce
from collections import Counter
from functools import reduce
class Solution:
def hasGroupsSizeX(self, deck) -> bool:
def gcd(x, y):
while (y):
x, y = y, x % y
return x
counter = Counter(deck)
return reduce(gcd, counter.values()) >= 2
s = Solution()
print(s.hasGroupsSizeX(deck = [1,2,3,4,4,3,2,1]))