이상한 문자 만들기

seheeee_97·2023년 12월 19일

회고팀

목록 보기
31/41





String[] words = s.split(" ", -1);

class Solution {
    public String solution(String s) {
        //공백기준으로 문자열 나눠서 배열로 저장
        String[] words = s.split(" ", -1);
        String temp;
        StringBuilder answer = new StringBuilder();
        
        for(int i = 0; i < words.length; i++){
            temp = words[i];
            
            for (int j = 0; j < temp.length(); j++) {
                char at = temp.charAt(j);
                
                if (j % 2 == 1) {   //홀수
                    answer.append(Character.toLowerCase(at));
                } else if (j % 2 == 0) {    //짝수
                    answer.append(Character.toUpperCase(at));
                }
            }
            if (i < words.length - 1) {
                answer.append(" ");
            }
        }
        return answer.toString();
    }
}






String[] words = s.split(" ");으로 제출했을 때 오류

class Solution {
    public String solution(String s) {
        //공백기준으로 문자열 나눠서 배열로 저장
        String[] words = s.split(" ");
        String temp;
        StringBuilder answer = new StringBuilder();
        
        for(int i = 0; i < words.length; i++){
            temp = words[i];
            
            for (int j = 0; j < temp.length(); j++) {
                char at = temp.charAt(j);
                
                if (j % 2 == 1) {   //홀수
                    answer.append(Character.toLowerCase(at));
                } else if (j % 2 == 0) {    //짝수
                    answer.append(Character.toUpperCase(at));
                }
            }
            if (i < words.length - 1) {
                answer.append(" ");
            }
        }
        return answer.toString();
    }
}



String[] words = s.split(" ", -1); 과 String[] words = s.split(" ");의 차이

String[] words = s.split(" ", -1);
여기서 -1은 제한이 없음을 의미
따라서 문자열 내의 모든 공백을 기준으로 나눔
만약 문자열의 끝에 공백이 있다면, 끝에 빈 문자열도 포함하여 반환
배열의 마지막에 빈 문자열이 추가되는 것을 방지


String[] words = s.split(" ");
여기서는 기본적으로 limit가 지정되지 않았으므로 기본값인 0이 적용
이 경우 문자열의 시작 부분에 있는 모든 공백은 무시되며, 문자열 중간에 있는 연속된 공백은 하나로 간주되어 나뉨
문자열 끝에 있는 공백은 무시되어 배열에는 끝에 빈 문자열이 포함되지 않음


-> -1을 사용하면 빈 문자열도 포함하여 문자열을 나누고, 기본값인 0을 사용하면 빈 문자열은 포함되지 않는다


여러 개의 연속된 공백을 유지하고 싶거나, 문자열의 끝에 공백이 있어도 빈 문자열을 포함하고 싶다면 String[] words = s.split(" ", -1);을 사용


String[] words = s.split(" ", -1);은 마지막 빈 문자열을 그대로 출력

https://school.programmers.co.kr/learn/courses/30/lessons/12930

0개의 댓글