강의로 돌아가기
차지원

개편되고 나서 테스트케이스 실패시 이유를 몰라서 불편하네요.

제가 문제를 이해를 못했는지 실패가나는데, 혹시 문자열이 {abcd, cdx, abc, abcde} 이고 n = 2 일 경우 답이 뭐라고 출력이 되야하죠?
제가 생각하기에는 {abc,abcd,abcde,cdx} 인데 맞나요?


public String[] solution(String[] strings, int n) {
        // find the longest element in the given strings array
        char[] charArr = new char[strings.length];
        for (int i = 0; i < strings.length; i++) {
            charArr[i] = strings[i].charAt(n);
            // System.out.print(charArr[i]+" ");
        }
        // bubble sort
        for (int i = 0; i < charArr.length; i++) {
            for (int j = 0; j < charArr.length - 1 - i; j++) {
                if (charArr[j] > charArr[j + 1]) {
                    // charArray sort
                    char tempChar = charArr[j];
                    charArr[j] = charArr[j + 1];
                    charArr[j + 1] = tempChar;

                    // strings array sort with the same index
                    String tempStr = strings[j];
                    strings[j] = strings[j + 1];
                    strings[j + 1] = tempStr;
                } 
                else if (charArr[j] == charArr[j + 1]) {
                    String shortStr;
                    int shortLength;
                    String longStr;
                    if (strings[j].length() <= strings[j + 1].length()) {
                        shortLength = strings[j].length();
                        shortStr = strings[j];
                        longStr = strings[j + 1];
                    } 
                    else {
                        shortLength = strings[j + 1].length();
                        shortStr = strings[j + 1];
                        longStr = strings[j];
                    }

                    boolean ifExistSameStr = true;
                    for (int k = 0; k < shortLength; k++) {
                        if (strings[j].charAt(k) > strings[j + 1].charAt(k)) {
                            String tempStr = strings[j + 1];
                            strings[j + 1] = strings[j];
                            strings[j] = tempStr;
                            ifExistSameStr = false;
                            break;
                        }
                    }
                    if (ifExistSameStr) {
                        strings[j] = shortStr;
                        strings[j + 1] = longStr;
                    }

                }
            }
        }
        return strings;
    }
  • 임동주
    핵인정 임동주 2019.01.29 19:26
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.