문자열 s가 주어졌을 때,
공백을 기준으로 다음 문자는 대문자로, 그 뒤 문자는 소문자로 치환한 값을 구해야한다.
입력 : s
3people unFollowed me
⇒ 3people Unfollowed Me
입력 : s
for
⇒ For
입력 : s
hello World
⇒ Hello World
public class Solution {
public String solution(String s) {
StringBuilder answer = new StringBuilder(); // 문자열을 더하기 때문에 StringBuilder 사용
String firstStr = s.charAt(0) + "";
answer.append(firstStr.toUpperCase()); // 첫 글자는 무조건 대문자
for (int i = 1; i < s.length(); i++) {
String now = s.charAt(i) + "";
if (now.equals(' ')) { // 공백이면 그대로 넘어가기
answer.append(" ");
} else if (s.charAt(i - 1) == ' ') { // 전 문자열이 공백이면
answer.append(now.toUpperCase()); // 대문자
} else {
answer.append(now.toLowerCase()); // 소문자
}
}
return answer.toString();
}
@Test
public void 정답() {
Assert.assertEquals("3people Unfollowed Me", solution("3people unFollowed me"));
Assert.assertEquals("For The Last Week", solution("for the last week"));
Assert.assertEquals("For", solution("for"));
Assert.assertEquals("Hello World", solution("hello World"));
}
}
if (now.equals(' '))
의 경우 없어도 되지않나요?
StringBuilder answer = new StringBuilder();
String 으로 풀지않고 char로 풀경우 위와 같은 코드로 풀수 있는데 효율성 차이가 심하게 나서 위와 같은 방식도 고려해보셨으면 해서 댓글 남겨드립니다! 고생하세요~