最新华为OD机试真题-机场航班调度程序(100分)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员
✨ 本系列打算持续跟新 华为OD机试-D卷 的三语言AC题解
👏 感谢大家的订阅➕ 和 喜欢💗
📎在线评测链接
🌍 评测功能需要 =>订阅专栏<= 后联系清隆解锁~
🍓OJ题目截图
✈️ 机场航班调度程序
问题描述
在 市机场,停放了多架飞机,每架飞机都有自己的航班号,例如 ,, 等。航班号的前 个字符是航空公司的缩写,后 个数字代表航班信息。由于机场只有一条起飞跑道,调度员需要安排这些航班有序起飞。为了保证起飞的有序性,调度员需要先按照航空公司的缩写对所有航班进行排序,同一航空公司的航班再按照航班号的后 个数字进行排序。请编写一段代码,根据输入的航班号信息,帮助调度员输出航班的起飞顺序。
输入格式
第一行输入航班信息,多个航班号之间用逗号(,
)分隔,输入的航班号不超过 个。例如:
CA3385,CZ6678,SC6508,DU7523,HK4456,MK0987
输出格式
输出按照调度排序后的有序航班号,航班号之间用逗号(,
)分隔。
样例输入
样例 1
CA3385,CZ6678,SC6508,DU7523,HK4456,MK0987
样例 2
MU1087,CA9908,3U0045,FM1703
样例输出
样例 1
CA3385,CZ6678,DU7523,HK4456,MK0987,SC6508
样例 2
3U0045,CA9908,FM1703,MU1087
数据范围
航班号为 位长度,前 位为航空公司缩写,后 位为纯数字,不考虑存在后 位重复的场景。
题解
为了实现航班的有序起飞,我们需要先对航班号进行排序。排序的规则是先按照航班号的前 个字符(航空公司缩写)进行排序,如果航空公司缩写相同,再按照航班号的后 个数字进行排序。
参考代码
- Python
def sort_flights(flight_str):
flights = flight_str.split(',')
flights.sort(key=lambda x: (x[:2], int(x[2:])))
return ','.join(flights)
if __name__ == "__main__":
flight_str = input().strip()
print(sort_flights(flight_str))
- Java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String flightStr = scanner.nextLine();
String[] flights = flightStr.split(",");
Arrays.sort(flights, (a, b) -> {
int cmp = a.substring(0, 2).compareTo(b.substring(0, 2));
if (cmp == 0) {
return Integer.parseInt(a.substring(2)) - Integer.parseInt(b.substring(2));
}
return cmp;
});
System.out.println(String.join(",", flights));
}
}
- Cpp
#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;
int main() {
string str;
cin >> str;
stringstream ss(str);
vector<string> flights;
string flight;
while (getline(ss, flight, ',')) {
flights.push_back(flight);
}
sort(flights.begin(), flights.end(), [](const string &a, const string &b) {
if (a.substr(0, 2) == b.substr(0, 2)) {
return stoi(a.substr(2)) < stoi(b.substr(2));
}
return a.substr(0, 2) < b.substr(0, 2);
});
for (size_t i = 0; i < flights.size(); ++i) {
if (i > 0) cout << ",";
cout << flights[i];
}
return 0;
}
#华为OD##华为##春招##秋招##笔试#最新华为OD机试-C&D卷 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD-C/D卷的题目汇总和(Java/Cpp/Python)三语言解析 + 提供OJ在线评测