荣耀秋招机试三道编程题(2021

您所在的位置:网站首页 荣耀招聘吧 荣耀秋招机试三道编程题(2021

荣耀秋招机试三道编程题(2021

2024-07-09 23:14| 来源: 网络整理| 查看: 265

恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。 作者@TechGuide【全网同名】 点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

文章目录 提示第一道:将字母分为3个等级输出(100%)题目描述思路解析参考代码: 第二道: 推荐歌曲(100%)题目描述思路解析参考代码 第三道:切水果题目描述参考代码

提示 类似华为,甚至有出现过之前的原题。难度不大。 第一道:将字母分为3个等级输出(100%) 题目描述

将字母分为高中低三个等级,输入一个字符串,将三个等级的字母分开,然后排序。

思路解析

方法一:

三个按字典序排序的优先队列即可·

方法二:

用三个动态字符串StringBuilder分别存储三个等级的字符,然后通过Arrays.sort对每个等级的字符排序,所以需要提前将sb类型转为char数组,最后输出字符串。

对于这种排序问题可以使用优先队列,这个我平时不习惯用,但是看了一下人家的代码,似乎很好用。PriorityQueue是用的二叉树实现的小顶堆,可以通过add(t)添加一个节点,poll()删除堆顶元素,时间复杂度O(logN);peek()检索堆顶元素-不删除,复杂度O(1);要生成大顶堆可以使用new PriorityQueue(Collections.reverseOrder())。

switch和if-else比较:二者根本区别是switch会生成一个“跳表”,跳表的索引号和case的值相同,直接通过访问跳表的索引号就可以直接定位到相应的分支,这是一种空间换时间的做法;而if-else是逐个判断,定位到相应分支的做法。相比之下,if-else结构更加灵活,适合处理非【常量】的判断条件;switch定位分支较快,一般用于判断数据不多,并且数据类型是char、int等类型比较适合。

参考代码:

方法一

import java.util.PriorityQueue; import java.util.Scanner; public class Main1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); PriorityQueue q1 = new PriorityQueue(); PriorityQueue q2 = new PriorityQueue(); PriorityQueue q3 = new PriorityQueue(); for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3