[华为OD]C卷 机场航班调度 ,XX市机场停放了多架飞机,每架飞机都有自己的航班号100

题目:

XX市机场停放了多架飞机,每架飞机都有自己的航班号CA3385, CZ6678, SC6508

等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。

但是XX市机场只有一条起飞用跑道,调度人员需要安排目前停留在机场的航班有序起

飞。为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班

进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序最终获得安排好的航班的

起飞顺序。

请编写一段代码根据输入的航班号信息帮助调度员输出航班的起飞顺序。航空公司缩写排

序按照从特殊符号$ & *,0~9,A~Z排序;

输入描述

第一行输入航班信息,多个航班号之间用逗号(",")分隔,输入的航班号不超过100个

例如:

CA3385,CZ6678,SC6508,DU7523,HK4456,MK0987

备注:航班号为6位长度,后4位为纯数字,不考虑存在后4位重复的Q场号

输出描述

CA3385,CZ6678/ DU7523,HK4456,MK0987,SC6508

示例1:

输入

CA3385,CZ6678,SC6508,DU7523,HK4456,MK987

输出

CA3385,CZ6678/ DU7523,HK4456,MK0987,SC6508

说明

输入目前停留在该机场的航班号,输出为按照调度排序后输出的有序的航班号

示例2:

输入

MU1087,CA9908,3U0045,FM1703

输出

3U0045,CA9908,FM1703,MU1087

题解:

明显的自定义排序,也就是把字符串前两个单独比较,后面的再比较,所以可以自定义对象,把字符串前两个和后续拆开进行比较。这个题目中前面缩写排序,和实际字符对应的ascii码排序是一致的,所以可以直接用字符串比较就可以了(如果不一致的话,就需要自己来写比较方案了,那样的话可以定义一个hashMap来弄也可以)

代码:

java 复制代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Flight {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        if(!sc.hasNextLine()){
            return;
        }
        String[] flightInfo = sc.nextLine().split(",");
        List<FlightName> flightNameList = new ArrayList<>();
        for(int i=0;i<flightInfo.length;i++){
            FlightName flightName = new FlightName(flightInfo[i].substring(0,2)
                    ,flightInfo[i].substring(2));
            flightNameList.add(flightName);
        }

        Collections.sort(flightNameList);

        StringBuilder sb = new StringBuilder();
        for(int i =0;i<flightNameList.size();i++){
            if(i !=0){
                sb.append(",");
            }
            sb.append(flightNameList.get(i).getFlightName());
        }
        System.out.println(String.valueOf(sb));


    }

    public static class FlightName implements Comparable<FlightName>{
        private String prefix;
        private String flightNum;


        public FlightName(String prefix, String flightNum) {
            this.prefix = prefix;
            this.flightNum = flightNum;
        }

        @Override
        public int compareTo(FlightName o){
            if(o.prefix.equals(this.prefix)){
                return o.flightNum.compareTo(this.flightNum);
            }
            else {
                return this.prefix.compareTo(o.prefix);
            }
        }

        public String getFlightName(){
            return this.prefix+this.flightNum;
        }
    }
}

验证:

相关推荐
无限码力7 小时前
华为OD机考真题 -【测试用例执行计划】 (C++ & Python & JAVA & JS & GO)
华为od·华为od机考·华为od机试真题·华为od机试·华为od上机考试·华为od机考真题
开开心心_Every1 天前
无广告干扰:简单好用文字LOGO设计工具
xml·java·网络·数据库·华为od·华为云·excel
我是华为OD~HR~栗栗呀2 天前
(华为od)21届-Python面经
java·前端·c++·python·华为od·华为·面试
无限码力2 天前
华为OD机试双机位C卷 - 采样过滤 (C++ & Python & JAVA & JS & GO)
华为od·华为od机考·华为od机试·华为od机试双机位c卷·华为od上机考试·华为od机考真题·华为od机试-采样过滤
Tony_yitao7 天前
15.华为OD机考 - 执行任务赚积分
数据结构·算法·华为od·algorithm
无限码力8 天前
华为OD机试真题 - 最长广播响应 (C++ & Python & JAVA & JS & GO)
华为od·华为od机试·od机考·华为od上机考试真题·华为od机试-最长广播响应·华为od-最长广播响应
我是华为OD~HR~栗栗呀9 天前
(华为od)Python面经-20届
华为od
兩尛14 天前
猴子爬山od
算法·华为od
我是华为OD~HR~栗栗呀15 天前
23届(华为od)-C开发面经
java·c语言·c++·python·华为od·华为·面试
兩尛15 天前
【华为OD机试】运维日志排序
java·数据结构·华为od