下厨房
题目描述
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。
输入描述:
每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。
输出描述:
输出一行一个数字表示完成所有料理需要多少种不同的材料。
示例1
输入
复制
BUTTER FLOUR HONEY FLOUR EGG
输出
复制
4
算法思路
本题是基础题,题目要求输入多行字符串,每个字符串中的单词以空格分割,问有多少种不同的单词。很明显这是基础操作题,我们使用集合set:确定性、互异性、无序性、任意性。我们取出所有单词,加入集合中,最后输出集合的大小即可。
难点:
1、多行输入:in.hasNext()判断是否还有输入
2、分割:java API 中String 使用spilt()进行分割,我们也可以给入一个正则表达式进行分割。
3、集合set的使用
解题代码
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
/**
* 下厨房--网易
* @author yangjieyu
* 集合练习---set
*/
public class Main {
public static void main(String []args) {
init();
}
private static void init() {
//Material Science 材料
//java泛型擦出机制,HashSet<Object>() 与 HashSet<>()在编译器相同
Set<String> mSet = new HashSet<>();
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
String row = in.nextLine();
//使用空格进行分割
String []rows = row.split(" ");
for (String string : rows) {
mSet.add(string);
}
}
System.out.println(mSet.size());
in.close();
}
}