단어 수가 가장 많은 발신자

1899 단어 theabbieleetcodedsa
n 메시지의 채팅 로그가 있습니다. 두 개의 문자열 배열 messagessenders가 제공됩니다. 여기서 messages[i]senders[i]에서 보낸 메시지입니다.

메시지는 선행 또는 후행 공백 없이 단일 공백으로 구분된 단어 목록입니다. 보낸 사람의 단어 수는 보낸 사람이 보낸 총 단어 수입니다. 발신자는 둘 이상의 메시지를 보낼 수 있습니다.

단어 수가 가장 많은 발신자를 반환합니다. 단어 수가 가장 많은 발신자가 둘 이상인 경우 사전순으로 가장 큰 이름을 가진 발신자를 반환합니다.

메모:
  • 대문자는 사전순으로 소문자 앞에 옵니다.
  • "Alice""alice"는 별개입니다.

  • 예 1:

    입력: 메시지 = ["안녕하세요 userTwooo","안녕 userThree","멋진 하루 앨리스","좋은 날 userThree"], senders = ["앨리스","userTwo","userThree","앨리스"]
    출력: "앨리스"
    설명: Alice는 총 2 + 3 = 5 단어를 보냅니다.
    userTwo는 총 2개의 단어를 보냅니다.
    userThree는 총 3개의 단어를 보냅니다.
    Alice가 단어 수가 가장 많으므로 "Alice"를 반환합니다.

    예 2:

    입력: messages = ["leetcode는 모두에게 어떤가요","Leetcode는 연습에 유용합니다"], senders = ["Bob","Charlie"]
    출력: "찰리"
    설명: Bob은 총 5개의 단어를 보냅니다.
    Charlie는 총 5개의 단어를 보냅니다.
    가장 많은 단어 수가 동점이므로 사전식으로 더 큰 이름인 Charlie를 보낸 사람을 반환합니다.

    제약:
  • n == messages.length == senders.length
  • 1 <= n <= 104
  • 1 <= messages[i].length <= 100
  • 1 <= senders[i].length <= 10
  • messages[i]는 영문 대문자와 소문자로 구성되며 ' ' .
  • messages[i]의 모든 단어는 하나의 공백으로 구분됩니다.
  • messages[i]에 선행 또는 후행 공백이 없습니다.
  • senders[i]는 영문 대문자와 소문자로만 구성됩니다.

  • 해결책:

    from collections import Counter
    
    class Solution:
        def largestWordCount(self, messages: List[str], senders: List[str]) -> str:
            n = len(senders)
            ctr = Counter()
            for i in range(n):
                ctr[senders[i]] += len(messages[i].split())
            return max(senders, key = lambda sender: (ctr[sender], sender))
    

    좋은 웹페이지 즐겨찾기