
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
문제 풀이
우선 문자열s를 공백을 기준으로 분리하되 공백을 유지하여 분리해주었다.
분리한 배열words를 기준으로 순회하면서 다음과 같은 조건으로 문제를 풀었다.
1. 단어가 비어있지 확인
2. 비어있지 않다면 첫번째 단어가 알파벳인지 확인
3. 알파벳이라면 첫번째 단어 대문자로 변경, 뒤에는 소문자로 변경
4. 알파벳이 아니라면 모두 소문자로 변경
5. 마지막 단어가 아닐 경우 공백을 추가 (= 마지막 단어 전까지 한 단어가 끝나면 공백을 추가)
코드
public String solution(String s) {
String[] words = s.split(" ", -1);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < words.length; i++) {
String word = words[i];
if (!word.isEmpty()) {
char first = word.charAt(0);
if (Character.isLetter(first)) {
sb.append(Character.toUpperCase(first));
sb.append(word.substring(1).toLowerCase());
} else {
sb.append(first);
sb.append(word.substring(1).toLowerCase());
}
}
if (i < words.length - 1) {
sb.append(" ");
}
}
return sb.toString();
}