Скорее words = str.split(" "), если слова разделены пробелами, но если используются и знаки припеинания, то это будет работать уже не очень хорошо.
По сути надо два цикла, в одном перебираются слова, в другом буквы в слове. И наверное в java можно итерироваться по строке без разделения её на массив отдельных букв.
В задаче есть 2 смысла. Первое это собственно алгоритмизация. Показать преподавателю как вы умеете декомпозировать задачу на примитивные шаги. И показать оптимизации. StringBuilder к примеру. И второй смысл - просто решить задачу например используя JavaStreams. Это будет красивее. Компактнее. Но показать алгоритмизацию будет неудобно.