走进舒适圈の小窝

Loading...

快递分拣

快递分拣

题目描述

蓝桥王国的每个快递都包含两个参数:1.快递单号 2.快递城市。
小李是蓝桥王国的一名快递员,每天的快递分拣让他苦不堪言。
于是他想要你帮他设计一个程序用于快递的分拣(将不同快递按城市信息分开)

输入描述

输入第一行包含一个整数 N,表示快递的个数。
接下来第2~ N +1行每行包含一个字符串 S 和一个字符串 P,分别快递单号以及快递对应的城市。
1 < N < 103,保证数据量不超过 106

输出描述

输出共若干行。按城市的输入顺序依次输出城市的名称以及城市的快递个数,以及该城市的所有快递单号(单号按照输入顺序排序)

输入输出样例

示例

输入

10 
10124214 北京
12421565  上海
sdafasdg213 天津
fasdfga124 北京
145252  上海
235wtdfsg 济南
3242356fgdfsg 成都
23423 武汉  
23423565f 沈阳
1245dfwfs 成都

输出

北京 2
10124214
fasdfga124
上海 2
12421565
145252
天津 1
sdafasdg213
济南 1
235wtdfsg
成都 2
3242356fgdfsg 
1245dfwfs 
武汉 1
23423
沈阳 1
23423565f 

解答

import java.util.Scanner;
import java.util.Vector;

public class Main {
    static Vector<String> city = new Vector<>(); //存储省份
    static Vector<Vector<String>> dig = new Vector<>(); //按照城市存储单号
    static int myFind(String c){    //判断相同单号
        for (int i=0;i<city.size();i++){
            if (city.get(i).equals(c)){
                return i;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i=0;i<n;i++){
            String d = scanner.next(); //输入单号
            String c = scanner.next(); //输入省份
            int flag = myFind(c); //记录相同的省份数量
            if (flag == -1){ //当只有一个的时候
                city.addElement(c);
                dig.addElement(new Vector<String>()); //为具体单号创建一个动态数组
                dig.get(city.size()-1).addElement(d); //在对应省份位置添加单号
            }else
                dig.get(flag).addElement(d);
        }
        for (int i=0;i<city.size();i++){
            System.out.println(city.get(i)+" "+dig.get(i).size());
            for (int j=0;j< dig.get(i).size();j++){
                System.out.println(dig.get(i).get(j));
            }
        }
    }
}
posted @ 2024-12-08 17:35  走进舒适圈  阅读(2)  评论(0编辑  收藏  举报