JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.
💻 풀이
단어의 첫번째 문자만 대문자, 나머지는 소문자이기 때문에 문자열을 toLowerCase()를 사용해 먼저 전부 소문자로 바꿔준 뒤
split(" ", -1)을 사용해 공백으로 구분해 준다.
이때 공백문자가 연속해서 나올 수 있다는 제한사항을 참고해 빈 문자열도 배열에 담아주기 위해 -1을 함께 사용해주었다.
이후에는 반복문을 사용해 빈 문자열이 아닐 경우 단어의 첫 번째만 대문자로 바꿔 StringBuilder에 담아주고 subString(1)을 사용해 1번부터 마지막까지의 문자들을 담아준다.
⌛ 시간 0.07ms ~ 0.17ms
public String solution(String s) {
StringBuilder sb = new StringBuilder();
String[] arr = s.toLowerCase().split(" ", -1);
for(int i = 0; i < arr.length; i++) {
if(arr[i].length() > 0) {
sb.append(Character.toUpperCase(arr[i].charAt(0)))
.append(arr[i].substring(1));
}else {
sb.append(arr[i]);
}
if(i < arr.length -1) {
sb.append(" ");
}
}
return sb.toString();
}
💻 풀이
⌛ 시간 1.28ms ~ 3.74ms
public String soultion1(String s) {
String answer = "";
String[] arr = s.toLowerCase().split("");
boolean flag = true;
for(String str : arr) {
answer += flag ? str.toUpperCase() : str;
flag = str.equals(" ") ? true : false;
}
return answer;
}