首页 > 试题广场 >

美团商家注册系统

[编程题]美团商家注册系统
  • 热度指数:1427 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请你开发一个美团商家测试系统,并用等价划分法确认商家注册信息是否成功。
商家信息必须满足以下条件:
1. 系统中第一次注册的商家名字,被视为主店。
2. 系统中若出现重名商家,需要判断地址是否已存在该商家。若存在,则注册失败。否则注册成功,该商家被视为分店。
3. 商家的名字和地址必须由小写的英文字母组成,否则注册失败。
请你输出每个商家的信息,按商家名字的字典序升序输出。需要输出商家名字,商家主店地址,商家分店数量。

输入描述:
第一行输入一个正整数n,代表注册信息数量。
接下来的n行,每行输入两个字符串,用空格隔开。分别代表商家名字和商家地址。
1\leq n \leq 1000
给定的商家名字和商家地址字符串长度不超过 20,且不包含空格。


输出描述:
按商家名字字典序输出全部商家信息。每行输出一个,分别输出商家名字,商家主店地址,商家分店数量,用空格隔开。
示例1

输入

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));
        }
    }
}

编辑于 2024-03-11 11:45:48 回复(0)
定义了Shop类。
哈希表的哈希集合。
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);
    }
}


编辑于 2023-12-26 21:09:58 回复(0)