Programmers Algorithm
1867 ワード
質問する
リスト文字列が文字列で構成され、整数nを有する場合、各文字列のインデックスnのn番目の文字に基づいて昇順にソートしようとします.たとえば、文字列が[「sun」、「bed」、「car」であり、nが1の場合、文字列は各単語インデックス1の文字「u」、「e」、および「a」でソートされます.
せいげんじょうけん
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を使用して最初の部分を再度削除します.この方法で近づくとちょっと不思議です多くのプログラミングが解けるようになったので、方法も多様化してきました.
Reference
この問題について(Programmers Algorithm), 我々は、より多くの情報をここで見つけました https://velog.io/@qkrdudgh052/Programmers-Algorithm-a78toco5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol