美团 字符编码

原创 2016年08月31日 14:54:02

题目描述

请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。

输入描述:
每组数据一行,为待编码的字符串。保证字符串长度小于等于1000。

输出描述:
一行输出最短的编码后长度。

输入例子:
MT-TECH-TEAM

输出例子:
33

//哈夫曼编码
public class Main {

    private static int solve(String str) {
        if (str.length() == 0) {
            return 0;
        }
        int length = str.length();
        char[] chs = str.toCharArray();
        int[] arr = new int[256];
        for (int i = 0; i < length; i++) {
            ++arr[chs[i]];
        }
        PriorityQueue<Integer> prioArr = new PriorityQueue<>(length);
        int result = 0;
        for (int i = 0; i < 256; i++) {
            if (arr[i] != 0) {
                prioArr.add(arr[i]);
            }
        }
        while (prioArr.size() > 1) {
            int x = prioArr.poll();
            int y = prioArr.poll();
            int sum = x + y;
            prioArr.add(sum);
            result += sum;
        }
        return result;
    }

    public static void main(String[] arg) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String str= scan.nextLine();
            System.out.println(solve(str));
        }
        scan.close();
    }

}

字符串计数(字典序)---- 美团2016研发工程师在线编程题

[编程题] 字符串计数 求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。 输入描述: 每组数据包涵s1(长度小于100),s2(长...
  • chengonghao
  • chengonghao
  • 2016年08月05日 20:05
  • 879

美团笔试:字符编码

请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。输入描述:每组数据一行,为待编码的字符串。保证字符串长度小于等于1000。输出描述:一行输出最短的编码后长度。输入例子:MT-T...
  • zjwcdd
  • zjwcdd
  • 2016年09月09日 10:31
  • 709

美团笔试:字符编码

请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。输入描述:每组数据一行,为待编码的字符串。保证字符串长度小于等于1000。输出描述:一行输出最短的编码后长度。输入例子:MT-T...
  • zjwcdd
  • zjwcdd
  • 2016年09月09日 10:31
  • 709

字符编码(哈夫曼编码、贪心算法、priority_queue 的应用)---- 美团2016研发工程师编程题(二)

[编程题] 字符编码 请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。 输入描述: 每组数据一行,为待编码的字符串。保证字符串长度小于等于1000。 输出描述: 一行...
  • chengonghao
  • chengonghao
  • 2016年08月08日 20:34
  • 664

美团面试总结

面试前的准备接到面试通知的电话一阵兴奋,随即网上查了一下别人面试美团的面经,发现面试的范围相当广泛,又有学长说美团面试喜欢当场写代码,数据结构算法什么的都有,虽然有点担心过不了,可是一想到要去北京面试...
  • Panda_m
  • Panda_m
  • 2016年05月17日 21:15
  • 6261

高仿美团筛选菜单

高仿美团筛选菜单最近做项目中遇到了很多类似美团筛选菜单,抱着不重复发明轮子的思想去github上找了些开源的项目,但大都用的popupWindow实现,切换效果比美团要差很多,从一个菜单切换到另一个菜...
  • djk_dong
  • djk_dong
  • 2015年07月13日 18:03
  • 2947

2017 年 4 月美团 Android 面试总结

原文地址:https://juejin.im/entry/5911948b44d904007bfb11fc 原文链接:http://mp.weixin.qq.com/s/Yru4...
  • happy_love1990
  • happy_love1990
  • 2017年05月23日 17:43
  • 426

美团多渠道打包原理以及使用

打包方法原理 传统的打包方法都是在AndroidManifest添加渠道标示,每打一次包修改一次标示的名称。效率特别的低,一个稍微大一点的项目打上几十个渠道包可能需要几个小时半天的时间。 ...
  • myliuyx
  • myliuyx
  • 2016年08月10日 14:50
  • 2636

订餐系统之同步美团商家订单

早上和往常一样去工商大学打球,除了今天三分比较准外,一切都还是那样的循规蹈矩。 也许股子里还有那么一些不甘平庸,总想着能改变一下如此无趣的按部就班。 转过行政楼,一波一波的学生在谈笑风生。哦,是了,又...
  • jijunjian
  • jijunjian
  • 2017年05月19日 09:05
  • 3728

android面试题总结

CETV一面:40分钟 (1)项目问得多,问功能,代码有哪些亮点,怎么实现侧滑菜单的 等等。 (2)java的引用是有什么作用 (3)引用是什么,分别有哪几种,描述下他们的区别,弱引用用在什么地...
  • wangguolin66
  • wangguolin66
  • 2016年09月17日 09:36
  • 606
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:美团 字符编码
举报原因:
原因补充:

(最多只允许输入30个字)