抄送列表 - 牛客网题解

这是一个关于Java编程的题目,主要涉及字符串处理和集合操作。程序接收含有姓名的抄送列表,判断目标用户是否在列表中。如果在,则输出"Ignore",表示邮件不重要;否则,输出"Important!",表示邮件需要优先处理。程序通过读取多组数据,对每一组进行处理,使用HashSet存储姓名,并检查目标用户是否存在。
摘要由CSDN通过智能技术生成
[编程题]抄送列表

NowCoder每天要处理许多邮件,但他并不是在收件人列表中,有时候只是被抄送。他认为这些抄送的邮件重要性比自己在收件人列表里的邮件低,因此他要过滤掉这些次要的邮件,优先处理重要的邮件。
现在给你一串抄送列表,请你判断目标用户是否在抄送列表中。

输入描述:
输入有多组数据,每组数据有两行。

第一行抄送列表,姓名之间用一个逗号隔开。如果姓名中包含空格或逗号,则姓名包含在双引号里。总长度不超过512个字符。

第二行只包含一个姓名,是待查找的用户的名字(姓名要完全匹配)。长度不超过16个字符。


输出描述:
如果第二行的名字出现在收件人列表中,则输出“Ignore”,表示这封邮件不重要;否则,输出“Important!”,表示这封邮件需要被优先处理。

import java.util.*;
public class Main2{
    public static void main(String[] args){
        // 循环处理每组测试用例
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            // 接收第一行的所有名字
            String name = sc.nextLine();
            int i = 0;
            int end = 0;
            Set<String> s = new HashSet<>();
            while(i < name.length()){
                if('\"' == name.charAt(i)){
                    // 名字包含在""中 gb
                    end = name.indexOf('\"', i + 1);
                    s.add(name.substring(i+1, end)); // 参数1:起始位置 参数2:表示末尾位置---注
                    // 意:该位置的字符不会被截取到,截取到该位置之前的字符
                            i = end + 2;
                }else{
                    // 名字没有包含在""中,如果是最后一个姓名,后面没有“,“,则返回-1
                    end = name.indexOf(',', i+1);
                    if(-1 == end){
                        // 现在要分割的名字是最后一个名字
                        s.add(name.substring(i, name.length()));
                        break;
                    }
                    name.substring(i, end);
                    i = end + 1;
                }
            }
            // 获取第二行的名字并检测该名字是否在Set中存在
            name = sc.nextLine();
            if(s.contains(name)){
                System.out.println("Ignore");
            }else{
                System.out.println("Important!");
            }
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值