Q : 문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자가 되도록 리턴하기.
주의사항
String으로 리턴 시키세요.
연속된 공백이 있을 수 있다.
단어는 공백으로 구분한다.
빈 문자로만 이루어진 문자열 입력 받으면 빈 문자열 리턴하기.
코드 작성해보기
public String letterCapitalize(String str) {
// 빈 문자열을 입력받은 경우 빈문자열 리턴.
// if(str.isEmpty()) return "";
if(str.length() == 0 ) return "";
String[] words = str.split(" "); // split을 활용해서 공백을 기준으로 잘라 배열로 만들기.
Stirng result = ""; // 출력할 결과값에는 "" 빈문자열을 저장하기.
for(int i = 0; i < words.length; i++) {
//만약 words의 i배열중 빈 배열이 있으면 그냥두기 * (주의사항에 연속된 공백이 있을 수 있다.) 는 가능성 제거.
if(words[i].isEmpty()){
words[i] = words[i];
}
// 공백이 아니면 words[i]배열에 words[i]의 0번째 위치에 있는 문자를 추출해 대문자로 변경하고
// Stirng.valueOf를 통해서 string으로 바꿔주기
else {
words[i] = Stirng.valueOf(words[i].charAt(0).toUpperCase() +
// words[i]뒤에는 그대로 substring을 활용해서 0번째가 대문자로 잘렸으니 1번째부터 그대로 출력하기.
// 만약 뒤에문자가 소문자라는 확신이 없으면 .toLowerCase()를 활용하면 된다.
words[i].substring(1);
}
// result변수에 .join() 메서드를 활용해서 공백을 띄워준후 words를 넣는다
// .join()은 배열을 문자열로 합쳐줌.
result = String.join(" ", words);
return result;
}
}
결과값 :
/*
Ex) "hello min"이 들어오면.
.split()으로 인해 배열로 잘리고, [hello, min]이 될것이고
for문에 들어가서 이중공백은 없기에 if문은 바로 탈출.
else문에서 Stirng.valueOf(words[i].charAt(0).toUpperCase()로 인해서
hello의 h가 -> H가 되고, (*h가 charAt의 0번째 요소임.)
+ words[i].substring(1);
.substring(1) 으로 인해서 words[i]의 1번째 요소부터 마지막요소까지 뽑아온것을 더하게됨. ( '+' );
for문은 words.length만큼 돌기때문에 한번더 돌아서 같은방식으로
min -> Min이 될것이고.
String.join(" 공백을 두고 ", words를 합치세요); 이말이니
-> Hello Min 이 된다. 이 값을 result에 저장.
결과값 => Hello Min이 출력됨.
*/
이 문제를 해결하기 위해서 알아야 하는 필요지식
.split()
.substring()
.join()
String.valueOf()
'자기주도학습 > 코딩 테스트' 카테고리의 다른 글
ConvertListtoObject 2차원 배열을 HashMap으로 리턴하기 (0) | 2023.01.20 |
---|---|
HashMap 빈배열 첫번째, 마지막 요소를 키와 값으로 하는 HashMap 생성하기 (0) | 2023.01.12 |
자바에서 Void?? [Missing return statement 계속 뜨는 이유] (0) | 2022.12.27 |
코딩 테스트 JAVA 변수, 타입, 문자열 기초 (2) | 2022.12.22 |
댓글