Java源码实现:
【华为OD】C卷真题 :机场航班调度程序 java源码实现[思路+源码]-CSDN博客
Python源码实现:
【华为OD】C卷真题 :机场航班调度程序 Python源码实现[思路+源码]-CSDN博客
C语言代码实现:
【华为OD】C卷真题 :机场航班调度程序 C语言源码实现[思路+源码]-CSDN博客
C++代码实现:
【华为OD】C卷真题 :机场航班调度程序 C/C++源码实现[思路+源码]_机场航班调度程序od-CSDN博客
XX市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。但是XX市机场只有一条起飞用跑道,调度人员需要安排目前停留在机场的航班有序起飞。为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序最终获得安排好的航班的起飞顺序。请编写一段代码根据输入的航班号信息帮助调度员输出航班的起飞顺序。
说明:
1、航空公司缩写排序按照从特殊符号$ & *, 0~9,A~Z排序;
输入描述
第一行输入航班信息,多个航班号之间用逗号(“,”)分隔,输入的航班号不超过100个例如:
CA3385,CZ6678,SC6508,DU7523,HK4456,MK0987
备注:航班号为6位长度,后4位为纯数字,不考虑存在后4位重复的场景
输出描述
CA3385,CZ6678,DU7523,HK4456,MK0987,SC6508
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
CA3385,CZ6678,SC6508,DU7523,HK4456,MK0987
输出
CA3385,CZ6678,DU7523,HK4456,MK0987,SC6508
说明
输入目前停留在该机场的航班号,输出为按照调度排序后输出的有序的航班号
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
MU1087,CA9908,3U0045,FM1703
输出
3U0045,CA9908,FM1703,MU1087
4
+---+
| |
| | 3 3
| |
| +---+ ----- + ---+
| + | | | + |----|3
+ 2 | + | 2 | | 2 + | |
+ | + | | | + | |
+ +---+ + | ----+ | +---+ + | |
+ | + | | | | | + | | ++++++|
+ 1 | + | 1 1 | | 1 | | 1 + | | | |
+ | + | | | | | + | | | |
+ +---+ + +---+ +---+ +---+ +---+ + | | | |
+ | + | | | + | | | |
+ 0 | + | 0 0 | | 0 + | | | |
+ | + | | | + | | | |
+---+ + +-------+ +---+ + +--- | |+ | |++
+
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
按照题目意思,拆成2部分来排序即可
第一部分要考虑特殊符号,但是观察发现通过ASCII码来排序就行
后面的数字部分在前2字节相同的情况下进行排序即可
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
function schedule(mv) {
let sortedKeys = Object.keys(mv).sort();
let ost = '';
for (let key of sortedKeys) {
mv[key].sort((a, b) => a - b);
for (let value of mv[key]) {
ost += key + value.toString().padStart(4, '0') + ',';
}
}
let ans = ost;
if (ans.length > 0) {
ans = ans.substring(0, ans.length - 1);
}
return ans;
}
async function main(){
let s = await readline();
let tokens = s.split(',');
let mv = {};
for (let token of tokens) {
let key = token.substring(0, 2);
let value = parseInt(token.substring(2));
if (!mv[key]) {
mv[key] = [];
}
mv[key].push(value);
}
console.log(schedule(mv));
}
main();