• 【编程题 】抄送列表(详细注释 易懂)


    题目描述

    题目链接:抄送列表__牛客网

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

    输入描述:

    输入有多组数据,每组数据有两行。
    
    第一行抄送列表,姓名之间用一个逗号隔开。如果姓名中包含空格或逗号,则姓名包含在双引号里。总长度不超过512个字符。
    
    第二行只包含一个姓名,是待查找的用户的名字(姓名要完全匹配)。长度不超过16个字符。

    输出描述:

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

    示例1

    输入

    Joe,Kewell,Leon
    Joe
    "Letendre, Bruce",Joe,"Quan, William"
    William

    输出

    Ignore
    Important!

    题目解读:

         这个题成为四星题,题目要占一半原因,“这些抄送的邮件重要性比自己在收件人列表里的邮件低” ,它这句话明明表达的意思是 如果要发送的邮件人 不在列表里,那它的重要性就比较低。但输出描述又说,在收件人列表里,那它的重要性比较低,让找找要发邮件的人,在不在收件人列表里。  

           感觉说的有点像绕口令,对不起,我有罪! 

         

    解题思想:

         那题目大概懂了,就说解题思想,就是先把输入的字符串进行解析,把每个名字提出来(以逗号为界),如果遇到双引号,就把双引号里面的所有内容提出来。 这个提的过程需要稍微注意一下,就是遇到双引号就要把到下一个引号之前的所有内容提出来,否则就是把逗号之前的所有内容提出来。 我今天遇到个问题就是,我每次是等遇到逗号,才进行截取,这就出现一个问题,那就是当走到最后一个字符时,由于后面没有逗号了,而循环又走完了,导致最后一个名字提取不出来,那么当第二行输入的名字正好是收件人列表中最后一个名字时,就会得到错误的结果。 但是这个问题,我一直没有发现,给我卡了好久,真是痛苦哇。   

    代码注释:

    1. // write your code here
    2. import java.util.*;
    3. public class Main{
    4. public static void main(String[] args){
    5. Scanner scan = new Scanner(System.in);
    6. while(scan.hasNextLine()){
    7. String names = scan.nextLine();
    8. names +=",";
    9. HashSet set = new HashSet<>();
    10. String tmp="";
    11. boolean flag =true;
    12. for(int i=0;i< names.length();i++){
    13. if(flag){
    14. if(names.charAt(i) =='"'){
    15. flag = false;
    16. continue;
    17. }
    18. if(names.charAt(i) == ','){
    19. set.add(tmp);
    20. tmp ="";
    21. continue;
    22. }
    23. tmp += names.charAt(i);
    24. }else{
    25. if(names.charAt(i)=='"'){
    26. set.add(tmp);
    27. tmp = "";
    28. flag = true;
    29. continue;
    30. }
    31. tmp+= names.charAt(i);
    32. }
    33. }
    34. String objectName = scan.nextLine();
    35. if(set.contains(objectName)){
    36. System.out.println("Ignore");
    37. }else{
    38. System.out.println("Important!");
    39. }
    40. }
    41. }
    42. }

  • 相关阅读:
    Edu Codeforces Round 133 A. 2-3 Moves
    高级深入--day32
    JAVA:实现ternary search三元搜索算法(附完整源码)
    SSL、TLS、HTTPS的关系
    基于matlab实现的中点放炮各类地震波时距曲线程序
    props对象写法
    OSG跨平台编译、osgEarth跨平台编译
    用VS Code搞Qt6:编译附加模块
    阿里二面,前端开发在web3.0中该如何应用,答完面试官对我笑了笑
    【前端设计模式】之原型模式
  • 原文地址:https://blog.csdn.net/qq_51901495/article/details/126202994