关注
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
相关推荐
12-19 19:32
上海理工大学 产品经理 点赞 评论 收藏
分享
12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板 点赞 评论 收藏
分享
11-19 17:50
西北政法大学 新媒体运营 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
147500次浏览 2517人参与
# 秋招落幕,你是He or Be #
3204次浏览 76人参与
# 应届生进小公司有什么影响吗 #
109079次浏览 1116人参与
# 比亚迪工作体验 #
70157次浏览 254人参与
# 你面试体验感最差/最好的公司 #
3033次浏览 56人参与
# 工作中听到最受打击的一句话 #
2529次浏览 61人参与
# 大厂VS公务员你怎么选 #
71155次浏览 660人参与
# 重来一次,你会对开始求职的自己说 #
2966次浏览 71人参与
# 一人说一个提前实习的好处 #
3358次浏览 70人参与
# 团建是“福利”还是是 “渡劫” #
4026次浏览 110人参与
# 实习没事做是福还是祸? #
8261次浏览 135人参与
# 如何排解工作中的焦虑 #
243781次浏览 2241人参与
# 从顶到拉给所有面过的公司评分 #
144796次浏览 518人参与
# 今年你最想重开的一场面试是? #
1406次浏览 25人参与
# 你小心翼翼的闯过多大的祸? #
6919次浏览 109人参与
# 联影求职进展汇总 #
123831次浏览 781人参与
# OPPO求职进展汇总 #
755898次浏览 5390人参与
# 互联网公司爆料 #
158576次浏览 724人参与
# 产品实习,你更倾向大公司or小公司 #
189097次浏览 2053人参与
# 秋招结束之后的日子 #
113911次浏览 1039人参与