JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
s | return |
---|---|
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
class Solution {
public String solution(String s) {
String answer = "";
String[] arr = s.split(" ");
for(int i = 0; i < arr.length; i++){
String first = arr[i].substring(0,1);
first = first.toUpperCase();
String remain = arr[i].substring(1, arr[i].length());
remain = remain.toLowerCase();
if(i == arr.length-1){
answer += first + remain;
}else{
answer += first + remain + " ";
}
}
return answer;
}
}
입력받은 문자열 s를 공백기준으로 자르고 배열에 arr에 담아 arr의 원소들의 첫 번째 글자를 잘라 그것만 대문자로 바꾸면 되겠지 해서 first와 remain으로 나누어 arr의 원소들을 정리했는데 런타임에러가 우다다다 뜨기 시작했다.
class Solution {
public String solution(String s) {
String answer = "";
s = s.toLowerCase();
String[] arr = s.split(" ");
for(int i = 0; i < arr.length; i++){
if (arr[i].equals("")) {
answer += arr[i];
} else {
answer += arr[i].substring(0, 1).toUpperCase() + arr[i].substring(1);
}
if (i < arr.length - 1)
answer += " ";
}
if (" ".equals(s.substring(s.length()-1)))
answer += " ";
return answer;
}
}
찾아보니 테스트케이스에 공백의 갯수가 두 개 이상 들어간 것들이 있단다. 그러면 solution_01처럼 하면 공백이 제대로 출력되지 않는 현상이 발생한다... 그래서 arr[i]가 공백일 경우 answer에 그대로 공백을 더해주는 코드를 출력하고 전체적으로 다듬었다.