请你开发一个美团商家测试系统,并用等价划分法确认商家注册信息是否成功。
商家信息必须满足以下条件:
1. 系统中第一次注册的商家名字,被视为主店。
2. 系统中若出现重名商家,需要判断地址是否已存在该商家。若存在,则注册失败。否则注册成功,该商家被视为分店。
3. 商家的名字和地址必须由小写的英文字母组成,否则注册失败。
请你输出每个商家的信息,按商家名字的字典序升序输出。需要输出商家名字,商家主店地址,商家分店数量。
第一行输入一个正整数,代表注册信息数量。
接下来的行,每行输入两个字符串,用空格隔开。分别代表商家名字和商家地址。
给定的商家名字和商家地址字符串长度不超过 20,且不包含空格。
按商家名字字典序输出全部商家信息。每行输出一个,分别输出商家名字,商家主店地址,商家分店数量,用空格隔开。
5 ranko mt ranko op ranko op Ranko ok red ok
ranko mt 1 red ok 0
// 用TreeMap和LinkedHashSet import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); String str = in.nextLine(); Map<String,Set<String>> map = new TreeMap<>(); for(int i=0;i<n;i++){ String[] meg = in.nextLine().split(" "); String meg0 = meg[0].toLowerCase(); String meg1 = meg[1].toLowerCase(); if(meg0.equals(meg[0])&&meg1.equals(meg[1])){ Set<String> addr = map.getOrDefault(meg0,new LinkedHashSet<>()); addr.add(meg1); map.put(meg0,addr); } } for(Map.Entry<String,Set<String>> entry:map.entrySet()){ System.out.println(entry.getKey()+" "+entry.getValue().iterator().next()+" "+(entry.getValue().size()-1)); } } }
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); TreeMap<String, Shop> m = new TreeMap<>(); for (int i = 0; i < n; ++i) { String name = in.next(), pos = in.next(); if (!name.toLowerCase().equals(name)) continue; if (!m.containsKey(name)) m.put(name, new Shop(pos)); else m.get(name).poses.add(pos); } for (String name: m.keySet()) { System.out.printf("%s %s %d\n", name, m.get(name).main_pos, m.get(name).poses.size() - 1); } } } class Shop { String main_pos; Set<String> poses; Shop(String main_pos) { this.main_pos = main_pos; this.poses = new HashSet<>(); poses.add(main_pos); } }