文字列のソート (paizaランク B 相当)
sort関数内で、
文字列の昇順は
return a.length - b.length;
で、辞書順にするには、
if (a < b) { //辞書順でaがbの前なら
return -1;//aをbの前に並べる
}
if (a > b) { //辞書順でaがbの後なら
return 1;//aをbの後に並べる
}
return 0;//一緒なら元の順序のまま
のようにします。
解答例(比較関数自作)
ソート関数の中で、優先順位にしたがってifで場合分けをします。
javascript
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
//文字列の数 n
const n = Number(lines[0]);
//文字列の配列 s
const s = lines.slice(1).sort((a, b) => {
//1. 各文字列の文字数が昇順になるようにする。
if (a.length !== b.length) {
return a.length - b.length;
//2. 文字数が等しい複数の文字列の中では、辞書順になるようにする。
} else {
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
}
});
console.log(s.join("\n"));
解答例(優先順でソート順を変える)
優先順位が低い方からソートします。
javascript
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
//文字列の数 n
const n = Number(lines[0]);
//文字列の配列 s
const s = lines.slice(1);
//2. 文字数が等しい複数の文字列の中では、辞書順になるようにする。
s.sort((a, b) => {
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
});
//1. 各文字列の文字数が昇順になるようにする。
s.sort((a, b) => a.length - b.length);
console.log(s.join("\n"));