关注
list2=[]
list3=[]
class Node(object):
def__init__(self,name=None,value=None):
self._name=name
self._value = value
self._left=None
self._right = None
class HuffmanTree(object):
def __init__(self, char_weights):
self.a=[Node(part[0],part[1])for part in char_weights]
while len(self.a)!=1:
self.a.sort(key=lambda node:node._value,reverse=True)
c=Node(value=(self.a[-1]._value+self.a[-2]._value))
c._left=self.a.pop(-1)
c._right=self.a.pop(-1)
self.a.append(c)
self.root=self.a[0]
self.b=range(10)
def pre(self,tree,length):
node=tree
if(not node):
return
elif node._name:
list1=''
for i in range(length):
list1+=str(self.b[i])
list2.append(node._name)
list3.append(list1)
return
self.b[length]=0
self.pre(node._left,length+1)
self.b[length]=1
self.pre(node._right,length+1)
def get_code(self):
self.pre(self.root,0)
if __name__=='__main__':
dic=[]
i = raw_input()
for j in set(i):
dic.append((j,i.count(j)))
char_weights=dic
tree = HuffmanTree(char_weights)
tree.get_code()
r=''
for l in i:
for m in range(len(list2)):
if l==list2[m]:
r+=str(list3[m])
print r
# # abbcccdddd # 1101111111010100000 测试用例 为什么和我的不一样,求大佬告知!
查看原帖
点赞 3
相关推荐
_世界和平:可以偷偷吃肉,但是不要在饥饿的人面前一边吃肉一边吧唧嘴还嫌肉不好吃 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
26232次浏览 327人参与
# 一份好的简历长什么样? #
23187次浏览 423人参与
# 材料专业就业可以去哪些企业岗位 #
55017次浏览 376人参与
# 为了减少AI幻觉,你注入过哪些设定? #
8078次浏览 220人参与
# 在大厂上班是一种什么样的体验 #
15847次浏览 225人参与
# 机械人避雷的岗位/公司 #
45060次浏览 320人参与
# 你的mentor是什么样的人? #
51715次浏览 741人参与
# 论秋招对个人心气的改变 #
16816次浏览 254人参与
# 我和mentor的爱恨情仇 #
106823次浏览 969人参与
# 牛客AI体验站 #
9836次浏览 234人参与
# 程序员找工作至少要刷多少题? #
25038次浏览 317人参与
# 本周投递记录 #
842397次浏览 12226人参与
# 制造业的秋招小结 #
142304次浏览 2086人参与
# 晒晒你司的新年福利 #
10686次浏览 191人参与
# 应届生进小公司有什么影响吗 #
119079次浏览 1162人参与
# AI Coding的使用心得 #
6712次浏览 142人参与
# 一张图晒一下你的AI员工 #
6892次浏览 153人参与
# 我现在比当时_,你想录用我吗 #
10648次浏览 160人参与
# 通信/硬件求职避坑tips #
140062次浏览 1087人参与
# 秋招想进国企该如何准备 #
125553次浏览 617人参与
