연습문제
🔥 이상한 문자 만들기 🔥
문자열 s는 한 개 이상의 단어로 구성되어있다.
각 단어는 하나 이상의 공백문자로 구분되어있는데 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수 solution을 완성해보자.
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
class Solution {
public String solution(String s) {
String[] a = s.split("\\s",-1);
String[] c ={};
StringBuffer b = new StringBuffer();
for(int i=0;i<a.length;i++){
c = a[i].split("");
for(int j=0;j<c.length;j++){
if(j%2==0 || j==0){
b.append(c[j].toUpperCase());
}else{
b.append(c[j].toLowerCase());
}
}
if(i<a.length-1){
b.append(" ");
}
}
String answer = String.valueOf(b);
return answer;
}
}
처음에 예시에서 오류가 안나서 오! 하고 제출했는데 테스트케이스 4,5,8,9,11에서 오류가 났다.
마지막에 들어오는 공백은 아래에서 if문으로 제거했다고 생각했기때문에 한참동안 오류를 해결하지 못했다.
질문하기의 다른분의 글을 보고 상단에 배열 a에 값을 split해서 대입할때 -1을 함께 써주어야한다는것을 알았다.
결국은 성공...!
-1하나가 뭐라고 나를 힘들게 만들었을까
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
int idx = 0;
for (int i = 0; i < chars.length; i++) {
if (chars[i] == ' ')
idx = 0;
else
chars[i] = (idx++ % 2 == 0 ? Character.toUpperCase(chars[i]) : Character.toLowerCase(chars[i]));
}
return String.valueOf(chars);
}
}
열심히 하자 ^^