题目网址:
输入描述
每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。
输出描述
输出一行一个数字表示完成所有料理需要多少种不同的材料。
示例:
输入:
BUTTER FLOUR
HONEY FLOUR EGG
输出:
4
这道题有一个难点就是,不知道系统会输入几行,所以用Scanner.class.hasNext()方法进行判断,该方法返回boolean类型的值,当键盘手动输入结束时才会返回false.
import java.util.*;
/*
BUTTER FLOUR
HONEY FLOUR EGG
*/
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String[] src = new String[10];
Set<String> set = new HashSet<String>();
while(in.hasNext()){
String input = in.next();
src = input.split(" ");
for(String s : src){
set.add(s);
}
}
System.out.println(set.size());
}
}
关于字符串切分(按照指定字符切分)split
String[] split(String regex)
Splits this string around matches of the given regular expression.
String[] split(String regex, int limit)
Splits this string around matches of the given regular expression.
根据给定的正则表达式,切分字符串.
public static void main(String[] args){
String str = "sing dance rap basketball";
String[] result = str.split(" ");
System.out.println(Arrays.toString(result));
}
结果:
[sing, dance, rap, basketball]
public static void main(String[] args){
String str = "heheaddhahaha";
String[] result = str.split("add");
System.out.println(Arrays.toString(result));
}
结果
[hehe, hahaha]
字符串部分拆分
public static void main(String[] args){
String str = "sing dance rap basketball";
String[] result = str.split("b",2);//2 为limit,根据b这个字符串将str切分成两部分
System.out.println(Arrays.toString(result));
}
[sing dance rap , asketball]
注意:当limit = 0,等于没有传入参数,全部都切了
另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义
例如拆分ip地址,需要加上转义
public static void main(String[] args){
String str = "192.168.1.1" ;
String[] arr = str.split("\\.");
System.out.println(Arrays.toString(arr));
}
String str = "192*185*859*965" ;
String[] arr = str.split("\\*");
String str = "192+185+859+965" ;// -号不用
String[] arr = str.split("\\+");
String str = "192$185$859$965" ;
String[] arr = str.split("\\$");
String str = "192|185|859|965" ;
String[] arr = str.split("\\|");
1010

被折叠的 条评论
为什么被折叠?



