Ocorrências de uma letra em cada palavra

Crie uma função que receba uma frase e um caractere a ser buscado. Retorne um mapa com cada palavra da frase como chave e o número de ocorrências do caractere especificado como valor.

Exemplos

findOccurrences("Hello World", "o") ➞ {
  "hello" : 1,
  "world" : 1
}

findOccurrences("Create a nice JUICY function", "c") ➞  {
  "create" : 1,
  "a" : 0,
  "nice" : 1,
  "juicy" : 1,
  "function" : 1
}

findOccurrences("An APPLE a day keeps an Archeologist AWAY...", "A") ➞ {
  "an" : 1,
  "apple" : 1,
  "a" : 1,
  "day" : 1,
  "keeps" : 0,
  "archeologist" : 1,
  "away..." : 2
}

Notas

  • A função não deve diferenciar letras maiúsculas de minúsculas.
  • As palavras do mapa devem estar em letras minúsculas.
  • Talvez seja necessário buscar um sinal de pontuação.
  • Palavras repetidas devem ser ignoradas (veja o exemplo nº 3 para a palavra "an").

Exemplo em Java

assertEquals(java.util.Map.ofEntries(java.util.Map.entry("hello", 1), java.util.Map.entry("world", 1)), Program.findOccurrences("Hello World", 'o'));