本帖最后由 kinkon 于 2020-4-27 11:38 编辑
看了鱼友的发的发的帖子,发现差距还是很大的,都是快准狠,我只能暴力。
解法一:计数def f384(arr):
carr = Counter(arr)
a0 = '0'* carr.get('z', 0)
a1 = '1'* min(carr.get('o', 0), carr.get('n', 0), carr.get('e', 0))
a2 = '2'* carr.get('w', 0)
a3 = '3'* min(carr.get('t', 0), carr.get('h', 0), carr.get('r', 0), carr.get('e', 0))
a4 = '4'* carr.get('u', 0)
a5 = '5'* min(carr.get('f', 0), carr.get('i', 0), carr.get('v', 0), carr.get('e', 0))
a6 = '6'* carr.get('x', 0)
a7 = '7'* min(carr.get('s', 0), carr.get('e', 0), carr.get('v', 0), carr.get('n', 0))
a8 = '8'* carr.get('g', 0)
a9 = '9'* min(carr.get('n', 0), carr.get('i', 0), carr.get('e', 0))
return a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9
解法二,时间O(N3),估计也超时了def f384(arr):#带重复的暴力
dic = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4',
'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
carr = Counter(arr)
ans = ''
for val, n in dic.items():
if all(v in carr for v in val):
count = float('inf')
for v in val:
count = min(carr[v], count)
#print(v, carr[v], count)
ans += n * count
return ans
再来一个,还是暴力(有优化空间)def f384(arr):
dic = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4',
'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
carr = Counter(arr)
ans = ''
while carr:
for val, n in dic.items():
temp = Counter(val)
if not(temp - carr):
ans += n
carr -= temp
break
return ans
|