プログラマ文字列で任意にソート
8235 ワード
Programmer文字列でLV 1を任意にソート
質問リンク:https://programmers.co.kr/learn/courses/30/lessons/12915
私の質問
function solution(strings, n) {
for(let i = 0; i < strings.length; i++) {
strings[i] = strings[i][n] + strings[i];
}
strings.sort();
for(let j = 0; j < strings.length; j++) {
strings[j] = strings[j].substring(1);
}
return strings;
}
各文字列の特定のインデックスに基づいてソートされるため、このように書かれています.
じっこうじかん
人の質問に答える(1)
function solution(strings, n) {
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
まずは短いですね
じっこうじかん
思ったより実行時間が長い.sort()
と書いてあり、同時にString.prototype.localeCompare()
と書いてあるからかもしれません.あなたのおかげでlocaleCompare
の使い方がわかりました.
人の質問に答える(2)
function solution(strings, n) {
return strings.sort((a, b) => {
const chr1 = a.charAt(n);
const chr2 = b.charAt(n);
if (chr1 == chr2) {
return (a > b) - (a < b);
} else {
return (chr1 > chr2) - (chr1 < chr2);
}
})
}
Boolean
の価格を差し引いて、1
または-1
をエクスポートするのは少し驚きです.
じっこうじかん
この論理も速いようです.しかし、私が使った論理にはいくつかのテスト例があり、速度は非常に速く、約0.01~0.02 msです(これは何の意味がありますか...)
学識
やはり人の解答を見なければならない.実行時間を離れて、まず多くのことを学んだようです.Boolean
の値の間には、演算によって1、-1を導出することができ、localeCompare
の使い方も理解できる.またjavascript内のメソッドはたくさんありますが、速度自体では基本for loopを何回かに分けて使用すると、実行速度がさらに速くなることも見られます.問題を解決するために使うべきだが、スピード的に見ると、JavaScriptの基本的な方法を多く使うのは必ずしも腕ではない.
Reference
この問題について(プログラマ文字列で任意にソート), 我々は、より多くの情報をここで見つけました
https://velog.io/@srparkgogo/프로그래머스-문자열-내-마음대로-정렬하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function solution(strings, n) {
for(let i = 0; i < strings.length; i++) {
strings[i] = strings[i][n] + strings[i];
}
strings.sort();
for(let j = 0; j < strings.length; j++) {
strings[j] = strings[j].substring(1);
}
return strings;
}
function solution(strings, n) {
return strings.sort((s1, s2) => s1[n] === s2[n] ? s1.localeCompare(s2) : s1[n].localeCompare(s2[n]));
}
function solution(strings, n) {
return strings.sort((a, b) => {
const chr1 = a.charAt(n);
const chr2 = b.charAt(n);
if (chr1 == chr2) {
return (a > b) - (a < b);
} else {
return (chr1 > chr2) - (chr1 < chr2);
}
})
}
Reference
この問題について(プログラマ文字列で任意にソート), 我々は、より多くの情報をここで見つけました https://velog.io/@srparkgogo/프로그래머스-문자열-내-마음대로-정렬하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol