【华为2018年校园招聘】算法岗笔试题
我的个人微信公众号:Microstrong
微信公众号ID:MicrostrongAI
公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步!
知乎专栏:https://zhuanlan.zhihu.com/Microstrong
Github:https://github.com/Microstrong0305
个人博客:https://blog.csdn.net/program_developer
1. 给定一行字符串,求出这行字符串中出现频率最高的字符,字符串中含有标点符号,字符不区分大小写。如果出现频率相同时,输出先出现在字符串中的字符。
输入:
输入一行字符串,字符串中可能包含多个空格,也可能包含标点符号,但肯定包含字符。
输出:
输出字符的大写和出现频率。
输入样例:
Abcdefg ahigkl Mnopq rstu o v wBBBBBB!
输出样例:
B7
已经AC代码:
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);String input = sc.nextLine();String strs = input.replaceAll(" ","").toLowerCase();LinkedHashMap<Character, Integer> map = new LinkedHashMap<Character, Integer>();Character CharStr = null;Integer CountmaxLength = 0;for (Character temp : strs.toCharArray()) {if (map.containsKey(temp)) { map.put(temp, map.get(temp) + 1);} else {map.put(temp, 1);}}for (Entry<Character, Integer> entry : map.entrySet()) {if (entry.getValue() > CountmaxLength) {CharStr = entry.getKey();CountmaxLength = entry.getValue();} }System.out.println(Character.toUpperCase(CharStr)+CountmaxLength.toString());}}
2. 给你一个字符串,以这个字符串中字符出现的频率为权重,构造这个字符串的哈夫曼编码。(题目给的很长,其实意思简洁明了。)
输入样例:
abbcccdddd
输出样例:
1101111111010100000
已经AC代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Scanner;public class Main2 {static class Tree { private Node root; public Node getRoot() { return root; }public void setRoot(Node root) { this.root = root; } } static class Node implements Comparable<Node> { private String Strchars = ""; private int Numfrequence = 0; private Node parent; private Node leftNode; private Node rightNode; @Override public int compareTo(Node n) { return Numfrequence - n.Numfrequence; } public boolean isLeaf() { return Strchars.length() == 1; }public boolean isRoot() { return parent == null; } public boolean isLeftChild() { return parent != null && this == parent.leftNode; } public int getFrequence() { return Numfrequence; } public void setFrequence(int frequence) { this.Numfrequence = frequence; } public String getChars() { return Strchars; } public void setChars(String chars) { this.Strchars = chars; } public Node getParent() { return parent; } public void setParent(Node parent) { this.parent = parent; } public Node getLeftNode() { return leftNode; } public void setLeftNode(Node leftNode) { this.leftNode = leftNode; } public Node getRightNode() { return rightNode; } public void setRightNode(Node rightNode) { this.rightNode = rightNode; } }public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);String input = sc.nextLine();Map<Character, Integer> charAndNum = statisticsCharNum(input.toCharArray());String encodedBinariStr = encode2Binary(input, charAndNum);System.out.println(encodedBinariStr);}public static Map<Character, Integer> statisticsCharNum(char[] charArray) { Map<Character, Integer> map = new HashMap<Character, Integer>(); for (char temp : charArray) { Character Tempchar = new Character(temp); if (map.containsKey(Tempchar)) { map.put(Tempchar, map.get(Tempchar) + 1); } else { map.put(Tempchar, 1); } } return map; }/*** 构建树* @param statistics* @param leafs* @return*/private static Tree buildTree(Map<Character, Integer> statisticsChar2Num, List<Node> leafs) { Character[] keys_char = statisticsChar2Num.keySet().toArray(new Character[0]); PriorityQueue<Node> priorityQueue = new PriorityQueue<Node>();for (Character character : keys_char) { Node node = new Node(); node.Strchars = character.toString(); node.Numfrequence = statisticsChar2Num.get(character); priorityQueue.add(node); leafs.add(node); } int sizeNum = priorityQueue.size(); for (int i = 1; i <= sizeNum - 1; i++) { Node nodeOne = priorityQueue.poll(); Node nodeTwo = priorityQueue.poll(); Node totalNode = new Node(); totalNode.Strchars = nodeOne.Strchars + nodeTwo.Strchars; totalNode.Numfrequence = nodeOne.Numfrequence + nodeTwo.Numfrequence; totalNode.leftNode = nodeOne; totalNode.rightNode = nodeTwo; nodeOne.parent = totalNode; nodeTwo.parent = totalNode; priorityQueue.add(totalNode); } Tree tree = new Tree(); tree.root = priorityQueue.poll(); return tree; }public static String encode2Binary(String inputStr, Map<Character, Integer> statisticsChar2Num) { if (inputStr == null || inputStr.equals("")) { return ""; } char[] char_Array = inputStr.toCharArray(); List<Node> leaf_Nodes = new ArrayList<Node>(); buildTree(statisticsChar2Num, leaf_Nodes); Map<Character, String> encod2BinaryInfo = buildEncoding2Binary(leaf_Nodes); StringBuffer buffer = new StringBuffer(); for (char temp : char_Array) { Character character = new Character(temp); buffer.append(encod2BinaryInfo.get(character)); } return buffer.toString(); } private static Map<Character, String> buildEncoding2Binary(List<Node> leafNodes) { Map<Character, String> encodewords = new HashMap<Character, String>(); for (Node leafNode : leafNodes) { Character character = new Character(leafNode.getChars().charAt(0)); String encodeword = ""; Node currentNode = leafNode; do { if (currentNode.isLeftChild()) { encodeword = "0" + encodeword; } else { encodeword = "1" + encodeword; } currentNode = currentNode.parent; } while (currentNode.parent != null); encodewords.put(character, encodeword); } return encodewords; }
}
Reference:
【1】https://blog.csdn.net/kimylrong/article/details/17022319
3. 题目很长,读了好久都没明白题目意思。在此就不列出啦!
【华为2018年校园招聘】算法岗笔试题相关推荐
- 滴滴-2019+快手2020(A)-校园招聘算法工程师笔试题
在什么情况需要对特征使用归一化处理? 要解决这个问题首先要看归一化的作用: 1.归一化可以加快梯度下降法求解最优解的速度. 当特征之间的数值变化范围相差太大时,会使得收敛路径呈Z字型,导致收敛太慢,或 ...
- 华为java 上机_华为校园招聘Java上机笔试题
华为校园招聘Java上机笔试题 1.将大写字母转换成其对应小写字母后的第五个字母,大于z的从头开始数. 2.将一个十进制数(byte类型)转化二进制数,将二进制数前后颠倒,再算出颠倒后其对应的十进制数 ...
- 杭州java校园招聘_网易校园招聘杭州Java笔试题
地点:杭州 职位:java研发 第一部分:计算机科学基础 (注:所有职位必做) 1.(2分)最坏情况下时间复杂度为O(nlogn)的排序算法有() A.基数排序 B.归并排序.C.堆排序 D.快速排序 ...
- 阿里 c语言开发工程师,阿里巴巴2014秋季校园招聘软件研发工程师笔试题
阿里巴巴2014秋季校园招聘软件研发工程师笔试题 1. 单选题 1. 假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数 A: h(K)=K/N; B: h(K)=1; C: h(K) ...
- linux研发工程师笔试题,2015-8-29阿里校园招聘研发工程师笔试题
2015-8-29阿里校园招聘研发工程师笔试题 1. 某团队有2/5的人会写Java程序,有3/4的人会写C++程序,这个团队里同时会写Java和C++的至少有()人 A. 3 B. 4 C. 5 ...
- 2013豆瓣校园招聘研发类笔试题
2013豆瓣校园招聘研发类笔试题 转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11263443 1.将一个递归算法改为对 ...
- 多益网络2015校园招聘第二次笔试题
多益网络2015校园招聘第二次笔试题 LZ本人大三码农一枚,今天去参加多益网络的校园招聘2笔题,发现自己的c/c++知识还需要认真啊.话不多说上题,本次总共是5道选择题,第一题读代码题就不多说了,第二 ...
- 2021多益网络春季校园招聘游戏研发笔试题(回忆版)
2021多益网络春季校园招聘游戏研发笔试题 笔试题分为15道单选题,填空题,简答题,1道编程题 1单选题 就几乎是数据结构,计算机网络的题目,期末考试那种程度的选择题 2填空题 (1)求时间复杂度 ( ...
- 华为校招上机Java_2014年华为校园招聘Java上机笔试题
1.将大写字母转换成其对应小写字母后的第五个字母,大于z的从头开始数. 2.将一个十进制数(byte类型)转化二进制数,将二进制数前后颠倒,再算出颠倒后其对应的十进制数.(见Test2) 3.选秀节目 ...
- 2014迅雷校园招聘(C++)(笔试题(四)
迅雷2014校园招聘笔试题 转载请标明出处,原文地址:http://www.mianwww.com/html/2013/10/19169.html 温馨提示:客观题和主观题得分都要超过一定标准,才能获 ...
最新文章
- lintcode 中等题:subSets 子集
- C# NameValueCollection集合 (转)
- c语言课程设计 性别,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
- 一个伟大计划终于完成了(粉丝联盟网正式上线了)
- php mysql 查询时间_PHP-MySQL查询需要大量时间才能执行
- jQuery -- 目录
- python语言入门q-Python基础教程中的函数
- Python 被爆大 Bug,攻击者可远程代码执行漏洞!
- Amazon亲儿子MXNet与其他框架有哪些不同?| 赠书
- cblas_sgemm cblas.h
- Windows安装WSL详解
- dev、test和prod是什么意思?
- Git报错:/c/Users/zhouy/AppData/Roaming/npm/hexo: line 12: node: command not found
- python 技能系统
- GPT-3 离通用人工智能有多近?
- 艾司博讯:拼多多一件代发怎么发货
- 深度学习-活体检测发展之数据篇(二)
- iNFTnews|一键生成数字藏品,VERTU Web3手机是未来吗?
- 分享:用Python语言轻松实现二代身份证阅读器(读卡器)自动读卡,支持定制开发
- 视频伪原创片头片尾 视频合并会改变md5