面試題:編寫(xiě)程序录别,輸入打印隊(duì)列朽色,按優(yōu)先級(jí)輸出實(shí)際打印順序
某個(gè)打印機(jī)根據(jù)打印隊(duì)列執(zhí)行打印任務(wù)邻吞,打印任務(wù)有9個(gè)優(yōu)先級(jí),用1-9表示葫男,數(shù)字越大優(yōu)先級(jí)越高抱冷,打印機(jī)每次從列隊(duì)頭部取出第一個(gè)任務(wù)A,然后檢查隊(duì)列余下任務(wù)中有沒(méi)有比A優(yōu)先級(jí)更高的任務(wù)梢褐,若有旺遮,則將任務(wù)A放回列隊(duì)尾部,否則執(zhí)行A的打印盈咳,請(qǐng)編寫(xiě)程序耿眉,根據(jù)輸入打印隊(duì)列,輸出實(shí)際打印順序鱼响。
輸入描述:
輸入一行鸣剪,為每個(gè)任務(wù)優(yōu)先級(jí),優(yōu)先級(jí)之間用逗號(hào)隔開(kāi)
輸出描述:
輸出每個(gè)任務(wù)打印順序丈积,從0開(kāi)始筐骇,用逗號(hào)隔開(kāi)
示例:
輸入:
9,3江滨,5
輸出:
0铛纬,2,1
輸入:
1牙寞,2饺鹃,2
輸出:s
2,0间雀,1
解答:
function printPrinter(str) {
let arr = str.split(",");
let arr2 = [...arr];
arr2.sort((a, b) => {
if (a === b) {
return 0;
}
return a > b ? -1 : 1;
}); // 注意
let indexArr = [];
let lastIndex = 0;
for (let i = 0, len = arr.length; i < len; i++) {
let index = arr2.indexOf(arr[i]);
indexArr[i] = index;
arr2[index] = undefined; // 注意
}
console.log(indexArr.join());
}