public String solution(String s) {
char[] arr = s.toLowerCase().toCharArray();
return IntStream.range(0, arr.length)
.mapToObj(i -> i != 0 && arr[i - 1] != ' ' ? arr[i] : Character.toUpperCase(arr[i]))
.map(Object::toString)
.collect(Collectors.joining());
}