关注
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
相关推荐
点赞 评论 收藏
分享
01-02 11:44
门头沟学院 C工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
25893次浏览 325人参与
# 工作前VS工作后,你的心态变化 #
38594次浏览 267人参与
# 秋招想进国企该如何准备 #
125523次浏览 617人参与
# 你的mentor是什么样的人? #
51675次浏览 741人参与
# 从mentor身上学到了__ #
55699次浏览 886人参与
# 我和mentor的爱恨情仇 #
106778次浏览 969人参与
# 我的省钱小妙招 #
37641次浏览 446人参与
# 机械人避雷的岗位/公司 #
44986次浏览 320人参与
# 在大厂上班是一种什么样的体验 #
15565次浏览 225人参与
# 为了减少AI幻觉,你注入过哪些设定? #
7908次浏览 217人参与
# 职场上哪些行为很加分? #
323291次浏览 3619人参与
# 通信/硬件求职避坑tips #
140057次浏览 1087人参与
# 论秋招对个人心气的改变 #
16502次浏览 251人参与
# 你觉得mentor喜欢什么样的实习生 #
48811次浏览 1002人参与
# 你现在会用到哪些AI技能? #
24880次浏览 137人参与
# 牛客AI体验站 #
9654次浏览 230人参与
# 毕业论文进行时 #
27753次浏览 153人参与
# 运营来爆料 #
77509次浏览 467人参与
# 程序员找工作至少要刷多少题? #
24727次浏览 316人参与
# 过年最难忘的一件事 #
23379次浏览 179人参与
