2022年4月6日,华为笔试题一:词频统计

(回忆)

输入:

第一行两个数,表示topN和M,topN是需要统计的前topN个高频词,M表示有M组标题和正文。

第二行开始,一共M组,每组两行,一行标题一行正文、一行标题一行正文、…。

还有个条件:标题中的频次系数是3,正文中的频次系数是1。意思是标题中出现的次数一次算三次,正文中出现一次就算一次。

输出:

输出统计的出现频次最多的topN个单词,空格隔开。如果出现次数相同,出现在标题中的排在前面,如果还相同,按出现顺序先出现的排在前面。

import java.util.*;//input sample 1:
//3 2
//xinguan feiyan xinzeng bendi quezhen anli
//ju baodao chengdu xinzeng xinguan feiyan bendi quezhen anli yili shenzhen xinzeng bendi quezhen anli liangli yiqing zhengti kongzhi lianghao
//xinguan yimiao linchuang shiyan
//wuzhong xinguan yimiao tongguo sanqi linchaung shiyan xiaoguo lianghao
//
//output:
//xinguan xinzeng bendi// We have imported the necessary tool classes.
// If you need to import additional packages or classes, please import here.
public class Main {public static void main(String[] args) {// please define the JAVA input here. For example: Scanner s = new Scanner(System.in);// please finish the function body here.// please define the JAVA output here. For example: System.out.println(s.nextInt());Scanner s = new Scanner(System.in);while (s.hasNext()) {String topN_M = s.nextLine();int topN = Integer.parseInt(topN_M.split(" ")[0]);int M = Integer.parseInt(topN_M.split(" ")[1]);Map<String, int[]> map = new HashMap<>();int titleOrText;int order = 1;for (int m = 0; m < M; m++) {String title = s.nextLine();String[] titleArr = title.split(" ");String article = s.nextLine();String[] articleArr = article.split(" ");titleOrText = 1;for (String ss : titleArr) {if (map.containsKey(ss)) {int[] v = map.get(ss);int c = v[0] + 3;v[0] = c;map.put(ss, v);} else {int[] v = new int[3];v[0] = 3;v[1] = titleOrText;v[2] = order;order++;map.put(ss, v);}}titleOrText = 2;for (String ss : articleArr) {if (map.containsKey(ss)) {int[] v = map.get(ss);int c = v[0] + 1;v[0] = c;map.put(ss, v);} else {int[] v = new int[3];v[0] = 1;v[1] = titleOrText;v[2] = order;order++;map.put(ss, v);}}}Set<Map.Entry<String, int[]>> entrySet = map.entrySet();List<Map.Entry<String, int[]>> entryList = new ArrayList<>(entrySet);entryList.sort((o1, o2) -> {int num = o2.getValue()[0] - o1.getValue()[0];if (num == 0) {num = o1.getValue()[1] - o2.getValue()[1];}if (num == 0) {num = o1.getValue()[2] - o2.getValue()[2];}return num;});StringBuilder sb = new StringBuilder();for (Map.Entry<String, int[]> entry : entryList) {if (topN > 0) {sb.append(entry.getKey()).append(" ");topN--;} else {break;}}String s1 = sb.toString();System.out.println(s1.substring(0, s1.length() - 1));}}
}

【拙劣解法,欢迎指教】

华为笔试题:词频统计相关推荐

  1. 华为笔试题---明明的随机数

    题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着 ...

  2. 【leetcode】第394题:字符串解码(华为笔试题)

    题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...

  3. 华为笔试题 -- 多个数组按顺序合并(Java代码实现)

    华为笔试题 – 多个数组按顺序合并(Java代码实现) 题目描述: 现在有多组整数数组,需要将他们合并成一个新的数组.合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉 ...

  4. 2019届华为笔试题(软件卷)

    华为笔试题共3道编程题.第一题100分,第二题200分,第三题300分,一共600分. 第一题: 输入描述: 1.忽略小数点,例如"A1.2",认为包含整数1和2: 2.如果整数的 ...

  5. 2014-百度 阿里 华为笔试题

    8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面拿出来两个球:     ii.如果取出的是两 ...

  6. 华为机试题:统计一共有多少套五福

    最近做了几套华为的机试题,今天有时间,把之前写的几套代码全都贴出来.题目都只记得个大概,将就着看吧,不过代码都是完整的,自认为写的还行. 题目描述 大概意思是:集五福,人数≤10,每个人集完五福后,用 ...

  7. lisp压盖_华为笔试题--LISP括号匹配 解析及源码实现

    在17年校招中3道题目AC却无缘华为面试,大概是华为和东华互不待见吧!分享一道华为笔试原题,共同进步! ************************************************ ...

  8. 华为笔试题 简答错误记录(字符串处理,好题!!!)

    输入描述: 一行或多行字符串.每行包括带路径文件名称,行号,以空格隔开.文件路径为windows格式如:E:\V1R2\product\fpgadrive.c 1325 输出描述: 将所有的记录统计并 ...

  9. 华为笔试题--麻将和牌问题

    题目描述: 清一色是麻将番种之一,指由一种花色的序数牌组成的和牌. 数字1-9,每个数字最多有4张牌 我们不考虑具体花色,我们只看数字组合. 刻子:三张一样的牌:如: 111, 222, 333, . ...

  10. python - 集合:华为笔试题

    华为机测题: 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性 他先用计算机生成了N个1-1000之间的随机整数(N<=1000),N是用户输入的,对于 其中重复的数字,只保留一个, ...

最新文章

  1. SQL2005EXPRESS查询关键字出现次数的代码(比常规方法快5倍)
  2. python3多线程爬虫_【Python3 爬虫】U23_多线程爬虫之初识多线程
  3. hihocoder 1127 : 二分图三·二分图最小点覆盖和最大独立集
  4. 重学前端-js的类型问题
  5. lumen 支持多文件上传及php 原生多文件上传
  6. mysql命令查看过程内容_mysql查看存储过程命令
  7. ajax: jquery get request
  8. raw input()和input区别
  9. 十一、Python第十一课——用户输入和另一种循环(While)
  10. pgpool-II 高可用搭建
  11. 如何用PPT来实现三维3D效果,附参数设置详解
  12. 第一行Java代码,java高级面试笔试题
  13. 神奇的 SQL → 为什么 GROUP BY 之后不能直接引用原表中的列?
  14. java long类型赋值_Java语言编程第22讲——如何理解“Java是强类型语言”
  15. c#解析XML到DATASET及dataset转为xml文件函数
  16. python运行系统_python执行系统命令的方法
  17. 2799元即可畅享12GB+256GB超大存储,荣耀60 SE新版本正式发布
  18. 【FFmpeg4.1.4 编码】h265编码
  19. 彤云缥缈回金格,明月婵娟挂玉钩
  20. kernel支持4k/16k/64k pagesize

热门文章

  1. windows工具:推荐一款可以截长图(滚动截图)的工具FSCapture
  2. 最新新游社iApp源码+后台对接的hybbs内核
  3. B2B电商平台--ChinaPay银联电子支付功能
  4. 【FPGA算法加速】FPGA编程开发环境:Vivado安装教程详细说明
  5. VMP学习笔记之壳基础(一)
  6. Android 官方独立 adb / fastboot 工具包
  7. dd模式和iso模式_ISO的完整形式是什么?
  8. SoapUI测试webservice接口
  9. IDEA集成SVN代码管理常用功能
  10. 图书馆管理系统用例图