首页 > 试题广场 >

下厨房

[编程题]下厨房
  • 热度指数:54343 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。

输入描述:
每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。


输出描述:
输出一行一个数字表示完成所有料理需要多少种不同的材料。
示例1

输入

BUTTER FLOUR
HONEY FLOUR EGG

输出

4
import java.util.*;

public class Main {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        Scanner in = new Scanner(System.in);
      
        while (in.hasNextLine()) {
            String str = in.nextLine();
            String[] s = str.split(" ");
            for(String x :s){
                set.add(x);
            }
        }
        System.out.print(set.size());
    }
}

发表于 2021-11-18 21:47:34 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {        
        Scanner sc = new Scanner(System.in);
        String[] result = new String[2500];
        int count = 0;
        int length = 0;
        String temp = null;

        while (sc.hasNext()){

            count++;
            String[] strings = sc.nextLine().split(" ");
            if(strings.length <= 50 && count <= 50){

                for (int i = 0; i < strings.length; i++){
                    result[length] = strings[i];
                    length++;
                }
            }

        }
        int typeCount = length;
        for (int i = 0; i <= length; i++){
            temp = result[i];
            for (int j = i+1; j <= length; j++){
                if (result[j] == null|| temp == null)
                    continue;
                if (temp.equals(result[j])){
                    result[j] = null;
                    if(typeCount > 1)
                    typeCount--;
                }
            }
        }
        System.out.println(typeCount);

    }
}

发表于 2018-12-25 14:21:40 回复(0)
import java.util.Scanner;
import java.util.HashSet;
import java.util.Set;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Set<String> hs = new HashSet<>();
        while(sc.hasNext()){
            String[] strs = sc.nextLine().split(" ");
            for(int i=0;i<strs.length;i++){
                hs.add(strs[i]);
            }
        }
        System.out.println(hs.size());
    }
}

发表于 2018-10-12 11:06:06 回复(0)
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;


public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        Set<String> sets = new HashSet<>();
        while(input.hasNext()){
            String s1 = input.nextLine();
            sets.add(s1);
        }
        StringBuilder sb = new StringBuilder();
        sb.append(" ");
        //计算所需材料的总数
        Integer count=0;
        for (String string : sets) {
            //System.out.println(string);
            String []str=string.split(" ");
            for (String string1 : str) {
                if(sb.toString().contains(" "+string1+" ")) {
                    
                }else {
                    ++count;
                    sb.append(string1+" ");
                }
            }
        }
        System.out.println(count);
    }
}

发表于 2018-09-16 22:36:35 回复(0)
利用Set集合的去重复,一步到位,废话少说,直接上代码
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        //Set集合去重复
        Set<String> set = new HashSet<String>();
        //循环输入至无输入
        while(in.hasNext()){
            String str = in.nextLine();
            String arr[] = str.split(" ");//每种佐料以空格分开
            for(int i=0;i<arr.length;i++){
                set.add(arr[i]);
            }
        }
        System.out.println(set.size());
    }
}
发表于 2018-08-16 22:00:56 回复(0)
这个编译环境  要手动导包,   值得注意的一点:scanner对象的.next()可以完美规避掉空格和换行的差异
import java.util.HashSet;
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
         
        Scanner in = new Scanner(System.in);
        HashSet<String> set = new HashSet<String>();
        while(in.hasNext()){
            String str = in.next();          
                set.add(str);
        }
         System.out.println(set.size());
         set.clear();
    }
}



发表于 2018-07-18 10:25:55 回复(0)

import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
StringBuffer sb=new StringBuffer();
while(sc.hasNext()) {
sb.append(sc.next()+" ");
}
sc.close();
String[] strs=sb.toString().split(" ");
TreeSet<String> ts=new TreeSet<String>();
for(int i=0;i<strs.length;i++) {
ts.add(strs[i]);
}
System.out.println(ts.size());

}

TreeSet元素不可重复

发表于 2018-07-02 09:15:54 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        HashSet set = new HashSet();
        while(sc.hasNext()){
            String s = sc.next();
            set.add(s);
        }
        System.out.println(set.size());
    }
}
发表于 2018-05-31 09:58:51 回复(0)
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<String> list = new ArrayList<>();
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            String[] s = line.split(" ");
            map(s, list);
        }
        System.out.println(list.size());
    }

    public static void map(String[] s, List list) {
        for (String str : s) {
            if (list.contains(str)) {
                continue;
            }
            list.add(str);
        }
    }
}
编辑于 2018-05-19 10:44:06 回复(0)
import java.util.Scanner;
import java.util.HashSet;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        HashSet<String> set=new HashSet<String>();
        while(in.hasNext()){
            set.add(in.next());
        }
        System.out.println(set.size());
    }
}
发表于 2018-03-22 10:53:38 回复(0)
首先想到的数据数组一个一个比对发现效率很慢,
后来想了一下通过HashMap或者HashSet方式存储,原因:1.这两个集合类不允许存储重复元素;
2.这个集合元素采用Hash算法来快速的定位元素位置,就能够快速的进行元素比对,以提高效率
1. import java.util.HashSet;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        HashSet<String> set = new HashSet<String>();
        
        while(in.hasNext()) {
            String str = in.nextLine();
            String[] foots = str.split(" ");
            for(String foot : foots) {
                set.add(foot);
            }
        }
        System.out.println(set.size());
        set.clear();
    }
}

发表于 2018-01-15 18:04:24 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Set<String> set = new HashSet<>();
        while (in.hasNext()) {
            String[] strings = in.nextLine().split("\\s");
            Collections.addAll(set, strings);
        }
        System.out.println(set.size());
    }
}

发表于 2017-12-07 19:34:33 回复(0)
import java.util.LinkedList; import java.util.Scanner;  public class Main
{  public static void main(String args[]) {
                Scanner scanner = new Scanner(System.in);  LinkedList<String> strings = new LinkedList<>();  while (scanner.hasNext()) {
                        String[] foods = scanner.nextLine().split(" ");  for (int i = 0; i < foods.length; i++) {  if (!strings.contains(foods[i])) {
                                       strings.add(foods[i]);  }
                         }
                }
                System.out.println(strings.size());  }
}
这道题我觉得选择什么样的数据结构来存储字符串是非常重要的,就是要去掉重复的字符串,然后求出来一个用例中所有不相同的字符串的个数,也就是去掉重复字符串之后的数据结构的size
发表于 2017-11-21 16:33:58 回复(0)
import java.util.*;

/**
 * @author AmVilCres
 */
public class Main {
        
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String regex = " +";
        Set<String> set = new HashSet<>();
        while(sc.hasNext()) {
            set.add(sc.next());
        }
        System.out.println(set.size());
        set.clear();
    }
}
发表于 2017-11-15 18:55:30 回复(0)
import java.awt.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Map<String,Integer> map = new HashMap<String,Integer>();
        ArrayList<String> list = new ArrayList<String>();
        while (in.hasNext()) {
            list.add(in.next());
        }

        for(int i = 0;i<list.size();i++){
            for(int j=i+1;j<list.size();j++){
                if(list.get(i).equals(list.get(j)))
                    {
                    list.remove(j);
                    j--;
                }
            }
        }
        System.out.println(list.size());
    }
}
发表于 2017-09-28 09:04:41 回复(0)
import java.util.*;
public class Main{ 
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Set<String> set = new HashSet<String>(); 
        while(sc.hasNext()){
            String input = sc.next();
            set.add(input);      
        }
        System.out.println(set.size());
    }
}

发表于 2017-09-23 18:28:33 回复(0)

本题有一个难点,就是输入的行数不确定,也就是键盘输入几行就是几行,因此我们需要使用Scanner.class.hasNext()方法进行判断,该方法返回boolean类型的值,当键盘手动输入结束时才会返回false,window环境下使用ctrl+z结束输入循环,linux环境下使用ctrl+d结束输入循环。

另外,本题需要对输入的字符串根据空格分隔符来分割成一个数组并且去重,因此可以使用集合来去除重复元素,这里我使用的是HashSet集合
import java.util.HashSet;
import java.util.Scanner;

public class Main {
	
	//下厨房
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		HashSet<String> set = new HashSet<String>();
		
		while(in.hasNext()){
			String str = in.nextLine();
			String arr[] = str.split(" ");
			for(int i=0; i<arr.length; i++){
				set.add(arr[i]);
			}
		}
		
		System.out.println(set.size());
		set.clear();
	}
}
发表于 2017-08-31 12:37:22 回复(11)
java直接把每个单词取出来,用hashset即可了……
public class Main {
public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    String input="";  HashSet records=new HashSet();
    while(scanner.hasNext())
    {
        input=scanner.nextLine();
        String[] strings=input.split(" ");
        for(String string:strings)
            records.add(string);
    }
    System.out.println(records.size());
}
}

编辑于 2017-08-21 23:08:52 回复(0)
都是网易的题难度相差怎么这么大啊
发表于 2017-08-09 19:53:02 回复(0)

问题信息

难度:
19条回答 31992浏览

热门推荐

通过挑战的用户

查看代码