https://school.programmers.co.kr/learn/courses/30/lessons/12951
class Solution {
public String solution(String s) {
s = s.toLowerCase();
String[] tokens = s.split(" ", -1);
//tokens의 첫 문자가 문자라면 uppercase로 변경
for (int i=0; i<tokens.length; i++) {
if (!tokens[i].isEmpty()) {
tokens[i] = Character.toUpperCase(tokens[i].charAt(0)) + tokens[i].substring(1);
}
}
//tokens를 공백을 사용해 합친 후 answer로 리턴
String answer = String.join(" ", tokens);
return answer;
}
}
java.lang.String의 String.toLowerCase()를 사용하면 깔끔하게 소문자 처리가 가능하다.
String.split(” “, -1) 와 같이, 두번째 인자는 limit 인자인데, 0 보다 작으면 빈 문자열까지 전부 살린다. 문제의 조건을 보면 공백문자가 연속해서 나올 수 있다고 하기에, limit을 0으로 하지 않고 음수인 -1로 하는 것이 중요하다.
if (!tokens[i].isEmpty()) 가 없으면 런타임 에러가 난다. String.charAt(0)에서 발생하는 에러이다.
한 글자 토큰의 경우, tokens[i].substring(1)이 “”를 반환한다. 에러가 없다.