PR-文字列内で任意に並べ替え


質問する


リスト文字列が文字列で構成され、整数nを有する場合、各文字列のインデックスnのn番目の文字に基づいて昇順にソートしようとします.たとえば、文字列が[sun, bed, car]、nが1の場合、文字列は単語インデックス1の各文字u、e、およびaでソートされます.
せいげんじょうけん
  • 文字列の長さは1より大きく、50より小さい.
  • 文字列の要素は小文字で構成されています.
  • 文字列の要素の長さは1より大きく、100より小さい.
  • すべての文字列の要素長はnより大きい.
  • インデックス1の複数の文字が同じ文字列である場合、アルファベット順に並べられた先頭文字列が先頭に配置されます.

  • stringsnreturn["sun","bed","car"]1["car","bed","sun"]["abce","abcd","cdx"]2["abcd","abce","cdx"]

    に答える


    これは、
  • の特定のインデックスの文字を基準に並べ替えられる問題です.
  • sort関数の内部では、コールバック関数を用いてソートロジックが実現される.
  • sort関数は、要素をUnicodeに変換して比較し、インデックス内のアルファベットをUnicodeに符号化します.
  • Unicode化されたアルファベットの間で比較します.
  • 2つのアルファベットが同じ場合は、辞書のように比較する必要があるため、文字列の一番前のアルファベットから2つのアルファベットが変化するまでループします.
  • の2文字を異なる場所で再比較した.
  • コード#コード#

    function solution(strings, n) {
        let answer = [];
        answer = strings;
    
        answer.sort(function (a, b) {
            if (a[n].charCodeAt(0) === b[n].charCodeAt(0)) {
                let idx = 0;
                while (a[idx].charCodeAt(0) === b[idx].charCodeAt(0)) {
                    idx++;
                }
                return a[idx].charCodeAt(0) - b[idx].charCodeAt(0);
            }
            return a[n].charCodeAt(0) - b[n].charCodeAt(0);
    
        });
        return answer;
    }