핵심
공백문자가 연속해서 나올 수 있다.
첫 문자는 대문자 그외에는 소문자
import java.util.*;
class Solution {
public String solution(String s) {
s += "#";
String[] str = s.split(" ");
char temp;
String answer = "";
for (int i = 0; i < str.length; i++) {
if (str[i].isBlank()) {
answer += " ";
continue;
}
temp = str[i].charAt(0);
if (97 <= temp && temp <= 122) {
answer += ((char)(temp-32) + str[i].substring(1).toLowerCase());
} else {
answer += str[i] ;
}
if (i < str.length) {
answer += " ";
}
}
return answer.substring(0, answer.length() - 2);
}
}
매우 부끄럽게도 왜 안되지 이해를 못했는데 직접 테스트 케이스를 만들다가 알게되었다...
if문에서 temp가 소문자일 때는 대문자로 바꾸고 뒤에 것을 tolowerCase로 갖다 붙이는데
정작 temp가 대문자이고 그 뒤에 문자열도 대문자일 때를 생각하지 못했다...
class Solution {
public String solution(String s) {
s += "#";
String[] str = s.split(" ");
char temp;
String answer = "";
for (int i = 0; i < str.length; i++) {
// 기존 s 에서 공백 2개일때 answer에 공백 추가
// split(" ")을 하게되면 입력이 " a" 이렇게 연속 공백이면 " ", "a" 이런식으로 저장되기때문에 따로 공백을 추가해주었다.
if (str[i].isBlank()) {
answer += " ";
continue;
}
temp = str[i].charAt(0);
if (97 <= temp && temp <= 122) {
answer += ((char)(temp-32) + str[i].substring(1).toLowerCase());
} else {
answer += str[i].charAt(0) + str[i].substring(1).toLowerCase();
}
if (i < str.length) {
answer += " ";
}
}
return answer.substring(0, answer.length() - 2);
}
}
맞추긴 했는데 느리다. ㅠㅠ 문자열을 다루는 문제에 약하다.
문자열 문제를 좀 집중적으로 풀어볼 필요가 있다.