列表

详情


2284. 最多单词数的发件人

给你一个聊天记录,共包含 n 条信息。给你两个字符串数组 messages 和 senders ,其中 messages[i] 是 senders[i] 发出的一条 信息 。

一条 信息 是若干用单个空格连接的 单词 ,信息开头和结尾不会有多余空格。发件人的 单词计数 是这个发件人总共发出的 单词数 。注意,一个发件人可能会发出多于一条信息。

请你返回发出单词数 最多 的发件人名字。如果有多个发件人发出最多单词数,请你返回 字典序 最大的名字。

注意:

 

示例 1:

输入:messages = ["Hello userTwooo","Hi userThree","Wonderful day Alice","Nice day userThree"], senders = ["Alice","userTwo","userThree","Alice"]
输出:"Alice"
解释:Alice 总共发出了 2 + 3 = 5 个单词。
userTwo 发出了 2 个单词。
userThree 发出了 3 个单词。
由于 Alice 发出单词数最多,所以我们返回 "Alice" 。

示例 2:

输入:messages = ["How is leetcode for everyone","Leetcode is useful for practice"], senders = ["Bob","Charlie"]
输出:"Charlie"
解释:Bob 总共发出了 5 个单词。
Charlie 总共发出了 5 个单词。
由于最多单词数打平,返回字典序最大的名字,也就是 Charlie 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: string largestWordCount(vector<string>& messages, vector<string>& senders) { } };

javascript 解法, 执行用时: 148 ms, 内存消耗: 61.1 MB, 提交时间: 2022-12-06 13:10:25

/**
 * @param {string[]} messages
 * @param {string[]} senders
 * @return {string}
 */
var largestWordCount = function(messages, senders) {
  // 比赛中使用长的变量名,不太便于书写,因此转换一下
  let map = new Map(), m = messages, s = senders,n = s.length;
  // 使用map集合记录
  for(let i = 0; i < n; i++) {
      // 合并
      const num = m[i].split(' ').length;
      map.set(s[i], (map.get(s[i]) || 0) + num);
  }
  // 统计得到每个人所说的单词数,通过循环遍历,判断谁说的单词最多
  let max = -Infinity, maxx = '';
  map.forEach((value, key) => {
    if(value > max) {
      max = value;
      maxx = key;
    }else if(value == max) {
      // 当两个人说的单词一样多的时候,返回字典序大的
      let ans = [key,maxx];
      // sort()函数,默认就是字典序升序排序,不需要额外操作。
      ans.sort();
      maxx = ans[1];
    }
  });
  return maxx;
};

golang 解法, 执行用时: 52 ms, 内存消耗: 9.5 MB, 提交时间: 2022-12-06 13:09:02

func largestWordCount(messages, senders []string) (ans string) {
	cnt := map[string]int{}
	for i, msg := range messages {
		cnt[senders[i]] += strings.Count(msg, " ") + 1
	}
	for s, c := range cnt {
		if c > cnt[ans] || c == cnt[ans] && s > ans {
			ans = s
		}
	}
	return
}

python3 解法, 执行用时: 100 ms, 内存消耗: 19.3 MB, 提交时间: 2022-12-06 13:08:16

class Solution:
    def largestWordCount(self, messages: List[str], senders: List[str]) -> str:
        mp = defaultdict(int)
        for sender, message in zip(senders, messages):
            mp[sender] += len(message.split(' '))
        
        most_word = max(mp.values())
        most_senders = [sender for sender, cnt in mp.items() if cnt == most_word]
        most_senders.sort()
        return most_senders[-1]

上一题