【LeetCode】最多单词数的发件人 Java 题解
题目描述
给你一个聊天记录,共包含 n 条信息。给你两个字符串数组 messages 和 senders ,其中 messages[i] 是 senders[i] 发出的一条 信息 。
一条 信息 是若干用单个空格连接的 单词 ,信息开头和结尾不会有多余空格。发件人的 单词计数 是这个发件人总共发出的 单词数 。注意,一个发件人可能会发出多于一条信息。
请你返回发出单词数 最多 的发件人名字。如果有多个发件人发出最多单词数,请你返回 字典序 最大的名字。
注意:
字典序里,大写字母小于小写字母。"Alice" 和 "alice" 是不同的名字。
复制代码
思路分析
今天的算法题目是数组题目,题目虽然比较长,但容易理解。由于需要统计发件人的名字,我们采用 hashmap 来进行计数统计。
遍历 messages ,统计每一条 message 的单词个数,然后找到 sender。同时动态更新最大的 maxWordNum。
找到 hashmap 中等于 maxWordNum 的 sender,然后进行自然排序,返回结果即可。实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n * log n ), 空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/9cea4cf219bdbf0da584d9e4c】。文章转载请联系作者。
评论