题目描述
蓝桥王国的每个快递都包含两个参数:1.快递单号 2.快递城市。小李是蓝桥王国的一名快递员,每天的快递分拣让他苦不堪言。于是他想要你帮他设计一个程序用于快递的分拣(将不同快递按城市信息分开)。输入描述
输入第一行包含一个整数 N,表示快递的个数。
接下来第 2 ∼N+1 行每行包含一个字符串 S 和一个字符串 P,分别快递单号以及快递对应的城市。
1<=N <=10^3 ,保证数据量不超过 10^6 。输出描述
输出共若干行。按城市的输入顺序依次输出城市的名称以及城市的快递个数,以及该城市的所有快递单号(单号按照输入顺序排序)。输入输出样例
示例
输入
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
运行限制
最大运行时间:1s 最大运行内存: 256M
解题思路
利用一个Vector<String> city
容器存出现的城市名称
再以这个容器的下标建立个更大的Vector<Vector<String>> pack
容器存对应下标的城市的快递单号
- 查询城市是否遇到过
static int findCity(String c){
//int index = 0;
for(int i = 0;i < city.size();i++){
if(city.get(i).equals(c)){
return i;
}
}
return -1;
}
- 容器的建立和存储过程
static Vector city = new Vector<String>();
static Vector<Vector<String>> pack = new Vector<Vector<String>>();
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine();
for(int i = 0; i < n;i++){
String p = scan.next();
String c = scan.next();
scan.nextLine();
int index = findCity(c);
if(index!=-1){//以及存该城市
pack.get(index).add(p);
}else{//第一次遇到该城市
city.add(c);
pack.add(new Vector<String>());
pack.get(city.size()-1).add(p);
}
}
- 总的代码
import java.util.Scanner;
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static Vector city = new Vector<String>();
static Vector<Vector<String>> pack = new Vector<Vector<String>>();
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int n = scan.nextInt();
scan.nextLine();
for(int i = 0; i < n;i++){
String p = scan.next();
String c = scan.next();
scan.nextLine();
int index = findCity(c);
if(index!=-1){
pack.get(index).add(p);
}else{
city.add(c);
pack.add(new Vector<String>());
pack.get(city.size()-1).add(p);
}
}
for(int i = 0;i < city.size();i++){
System.out.println(city.get(i)+" "+pack.get(i).size());
for(int j = 0; j < pack.get(i).size();j++){
System.out.println(pack.get(i).get(j));
}
}
scan.close();
}
static int findCity(String c){
//int index = 0;
for(int i = 0;i < city.size();i++){
if(city.get(i).equals(c)){
return i;
}
}
return -1;
}
}