[プログラマレベル1]の回答を文字列降順で並べ替える



に質問


文字列sに現れる文字を大から小まで順番に並べ替え、新しい文字列を返す関数と解決策を完了します.
sは英語の大文字と小文字のみからなり、大文字は小文字より小さいと見なされます.

せいげんじょうけん

  • strは、1より長い文字列です.
  • 🖨️ I/O例



    💡 に答える

    class Solution {
    
        // swap 함수
        void swap(char[] data, int a, int b) {
            char tmp = data[a];
            data[a] = data[b];
            data[b] = tmp;
        }
    
        // 내림차순 정렬(퀵소트) 함수
        void quickSort(char[] data, int l, int r) {
            int left = l;
            int right = r;
            int pivot = data[(l + r) / 2];
    
            do {
                while(data[left] > pivot)
                    left++;
                while(data[right] < pivot)
                    right--;
                if(left <= right) {
                    swap(data, left, right);
                    left++;
                    right--;
                }
            } while (left <= right);
    
            if(l < right)
                quickSort(data, l, right);
            if(r > left)
                quickSort(data, left, r);
        }
    
        public String solution(String s) {
            char[] arr = s.toCharArray();
            quickSort(arr, 0, arr.length - 1);
            return new String(arr);
        }
    }

    📊 精度テスト結果



    ✏️ comment

  • 並べ替えは、高速並べ替えによって直接実現することができる.
  • char[] arr = s.toCharArray();->文字列を文字配列に変換する
  • return new String(arr);->文字配列を文字列に変更します.