快递分拣
快递分拣
题目描述
蓝桥王国的每个快递都包含两个参数: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)); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律