Programmers Algorithm



質問する


リスト文字列が文字列で構成され、整数nを有する場合、各文字列のインデックスnのn番目の文字に基づいて昇順にソートしようとします.たとえば、文字列が[「sun」、「bed」、「car」であり、nが1の場合、文字列は各単語インデックス1の文字「u」、「e」、および「a」でソートされます.
せいげんじょうけん
  • 文字列の長さは1より大きく、50より小さい.
  • 文字列の要素は小文字で構成されています.
  • 文字列の要素の長さは1より大きく、100より小さい.
  • すべての文字列の要素長はnより大きい.
  • インデックス1の複数の文字が同じ文字列である場合、アルファベット順に並べられた先頭文字列が先頭に配置されます.
  • I/O例
    stringsnreturn["sun", "bed", "car"]1["car", "bed", "sun"]["abce", "abcd", "cdx"]2["abcd", "abce", "cdx"]
    I/O例説明
    I/O例1
    「sun」、「bed」および「car」の最初のインデックス値は、それぞれ「u」、「e」および「a」である.文字列を整列させると、car、bad、sunになります.
    I/O例2
    「abce」および「abcd」、「cdx」の2番目のインデックス値は、それぞれ「c」、「c」および「x」である.したがって、ソート後、「cdx」は最後に位置します.「abce」および「abcd」は、アルファベット順に「abcd」よりも優先されるため、答えは「abcd」、「abce」および「cdx」である.

    に答える

    function solution(strings, n) {
      let arr = [];
      let array = [];
        
      for(let i = 0; i<strings.length; i++){
        arr.push(strings[i][n] + strings[i]);
      }
        
      arr.sort();
        
      for (let i=0; i< arr.length; i++){
       array.push(arr[i].slice(1))
      }
      return array;
    }

    コードを解くときの感じ


    私はこの問題を解決するときにsortを使うべきだと知っていますが、どのようにsortにアクセスすればいいか分かりません.だから、私はずっとこの問題を考えていました.最初は方法について考えていました.
    forはドアを回して、その文字列のindex値の間で比較しようとしたが、比較するとsortができないと思ったので、別の方法でアクセスした.メソッドでは、上記の例で入力した値が「sun」、「bed」、および「car」であると仮定し、以下に示すコードに示すようにします.
    for(let i = 0; i<strings.length; i++){
        arr.push(strings[i][n] + strings[i]);
    }
    値自体に2番目の値を加算することにより、sun=usun、bed=ebed、car=acarが最後尾のn個の値を一時的に追加する.
    sortを行いました.次にfor文をもう一度回して任意に追加した文字列を削除し、新しい配列でpushを行い、整列させた場合、sliceを使用して最初の部分を再度削除します.この方法で近づくとちょっと不思議です多くのプログラミングが解けるようになったので、方法も多様化してきました.