
华为OD面试真题精选
🌟 强烈推荐:华为OD技术面试手撕算法代码真题 🌟
大家好!今天我给大家推荐一份备受赞誉的华为OD技术面试手撕算法代码真题。 所有题目均为华为od实际面试过程中出现的算法代码真题。
专栏:华为OD面试真题精选
文章目录
题目
给定一组名字字符串,名字和名字之间逗号隔开,名字出现一次,代表获得一票,
按照票数高低的顺序输出名字空格票数,相同票数的按照字母升序输出
用例
输入:xiaoming,xiaozhang,xiaoli,zhangsan,xiaoming
输出:xiaoming 2,xiaoli 1, xiaozhang 1,zhangsan
思路
这个问题的解决思路如下:
-
解析输入:首先,我们需要解析输入的字符串。这个字符串包含了一系列的名字,名字之间用逗号分隔。我们可以使用Java的
split方法来将字符串分割成一个名字数组。 -
计算票数:然后,我们需要计算每个名字的票数。我们可以使用一个HashMap来存储这些信息。在这个HashMap中,键是名字,值是票数。我们遍历名字数组,对每个名字,如果它在HashMap中不存在,我们就将它添加到HashMap中,并将票数设置为1。如果它已经在HashMap中,我们就将它的票数加1。
-
排序名字:接下来,我们需要按照票数和字母顺序对名字进行排序。我们可以使用一个PriorityQueue来实现这个功能。在这个PriorityQueue中,如果两个名字的票数相同,我们按照字母顺序排序。否则,我们按照票数的降序排序。我们将所有的名字添加到PriorityQueue中。
本文分享了华为OD面试中的一道算法真题,涉及将名字按票数高低及字母顺序排序。提供了解题思路和Java、Python、JavaScript、C++四种语言的解题代码。
订阅专栏 解锁全文
1879

被折叠的 条评论
为什么被折叠?



