テストエンコーディング|(JavaScript)プログラマー:文字列降順で配置


に質問


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

制限

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



    ほどく

    const solution=(s)=>s.split('').sort((a,b)=>a.charCodeAt()<b.charCodeAt()?1:-1).join('');
    文字列を1つずつ文字列に分けて並べ、アスキーコード値を基準に降順に並べ替えます.
    各要素と要素のサイズをAskyコードに変換して比較するので、速度は少し遅いようです.何か見逃したような気がします!

    🎈他人の解答

    function solution(s) {
      return s
        .split("")
        .sort()
        .reverse()
        .join("");
    }
    何かを見逃したような気がして、この接着剤を見てふと思い出した.
    Askyコードを考えるとA == 65, a == 97なので降順だとzが一番大きいので一番前、一番小さいAが一番後ろになります.したがって,Askyコードを比較する必要はなく,sort()関数を用いるだけでよく,文字列をUnicode値で比較し昇順に並べ替える.ソート後はreverse()で終わり、配列を1文字join('')にマージします.
    Unicodeから見るとAが最小でA == 0041, a == 0061Unicodeには0000~0 FFFがあります.

    参考資料とサイト(ありがとうございます)

  • https://programmers.co.kr/learn/courses/30/lessons/12917
  • Wikipedia-Unicode