欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

找到共同的选修课-hebust

程序员文章站 2022-03-26 16:45:29
每个同学喜欢的编程语言各不相同,请编程找出大家都喜欢的一门编程语言。输入格式:输入的第一行是记录的个数第一行之后为每个同学的编程语言记录,姓名与编程语言直接使用英文冒号分开,编程语言之间使用空格分开。输出格式:输出为共同喜欢的编程语言(如果结果为空,则输出 none )。输入样例:在这里给出一组输入。例如:3gcs:java js phpcxy:js python c++sds:c++ c js输出样例:在这里给出相应的输出。例如:js这个题目其实并不难,考察的是细节问...

每个同学喜欢的编程语言各不相同,请编程找出大家都喜欢的一门编程语言。

输入格式:
输入的第一行是记录的个数

第一行之后为每个同学的编程语言记录,姓名与编程语言直接使用英文冒号分开,编程语言之间使用空格分开。

输出格式:
输出为共同喜欢的编程语言(如果结果为空,则输出 none )。

输入样例:
在这里给出一组输入。例如:

3
gcs:java js php
cxy:js python c++
sds:c++ c js

输出样例:
在这里给出相应的输出。例如:

js

这个题目其实并不难,考察的是细节问题,一开始我在自己的intellij环境下运行成功了,但是在pta里面却报错了,想了很久都没有找到解决办法,只是能察觉到和自己的输入方式有关系,尝试了创建了两个Scanner也没有解决问题,后来请假了大佬才知道是因为第一次输入数字以后会把结束输入的回车键读入到下一次输入的字符串中。所以只需要在输入完数字的语句后面再添加一句nextline把回车键读走然后再读入字符串就可以解决问题了。
先来看看虞大佬的代码

import java.util.*;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String []str=new String[input.nextInt()];

        str[0]=input.nextLine();
        for(int i=0;i<str.length;i++){
            str[i]=input.nextLine();
        }

		/*for(int i=0;i<str.length;i++){
			 System.out.println(str[i]);
		    }*/
        String[][]ss=new String[str.length][];
        for(int i=0;i<str.length;i++){
            ss[i]=str[i].split(":");

        }
		/*for(int i=0;i<str.length;i++){
			for(int j=0;j<ss[i].length;j++){
				System.out.println(ss[i][j]);
			}
		}*/
        String[][]sss=new String[str.length][];
        for(int i=0;i<str.length;i++){
            sss[i]=ss[i][1].split(" ");
        }
		/*for(int i=0;i<str.length;i++){
			for(int j=0;j<sss[i].length;j++){
				System.out.println(sss[i][j]);
			}
		}*/
       int i=0;
       int j=0;
       int k=0;
       int num=0;
        for(i=0;i<sss[0].length;i++){

            for(j=1;j<str.length;j++){
                for(k=0;k<sss[j].length;k++){
                      // System.out.println(sss[0][i]+" "+sss[j][k]);
                       if(sss[0][i].equals(sss[j][k]))
                           break;
                    }
                 if(k==sss[j].length)
                     break;
                }
             if(j==str.length) {
                 System.out.println(sss[0][i]);
                 num++;
             }
            // System.out.println(k+""+i+""+j+"");

        }
        if(num==0)
            System.out.println("none");


    }
}

然后我自己用的是hashmap来存放编程语言和出现次数。对于hashmap的知识点还是不够熟悉,边百度边写代码,考试最好还是用自己熟悉的代码方式。

import java.util.*;

public class E{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap<String,Integer> h = new HashMap<>();
        int n  = sc.nextInt();
        String [] s = new String[10];
        sc.nextLine();
        for (int i =0;i<n;i++){
            s = sc.nextLine().replace(":"," ").split(" ");
            for (String t : s) {
                if(h.containsKey(t)){
                    int number = h.get(t)+1;
                    h.put(t,number);
                }
                else {
                    h.put(t,1);
                }
            }
        }
        Iterator iter = h.entrySet().iterator();
         boolean flag = false;//用于判断是否有大家都喜欢的编程语言
        while(iter.hasNext()){
            Map.Entry entry = (Map.Entry) iter.next();
            Object key = entry.getKey();
            Object values  = entry.getValue();
//            System.out.println(key+":"+values);
            if((int)values == n){
                System.out.println(key);
            }
        }
         if(flag){
            ;
        }else {
            System.out.println("none");
        }
    }
}

最后再附上另一个大佬的代码,是个女孩子哦,很厉害的!

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String s = sc.nextLine();// 读取数字后面的回车符
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        ArrayList<String> sites = new ArrayList<String>();
        for (int i = 0; i < n; i++) {
            s = sc.nextLine();
            String[] b = s.split(":");
            String t = b[1];  //去掉姓名
            String[] r = t.split(" ");
            for (int j = 0; j < r.length; j++) {
                sites.add(r[j]); //将语言存入数组m
            }
        }

        Iterator<String> it=sites.iterator();
        while(it.hasNext()){
            String s1 = it.next();
            if(map.containsKey(s1)){
                map.put(s1,map.get(s1)+1);
            }
            else {
                map.put(s1,1);
            }
        }
        Iterator<String> he = map.keySet().iterator();
        int count=0;
        while(he.hasNext()){
            String key=he.next();
            if(map.get(key)==n){
                System.out.println(key);
                count=1;
            }
        }
        if(count==0)
            System.out.println("none");

    }
}

本文地址:https://blog.csdn.net/weixin_44436319/article/details/109637117