一、题目描述
电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字剪切下来,剪拼成匿名信。现在有一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。
但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注每个字母的顺序解释:单词on允许通过单词’no’进行替代报纸代表newspaper,匿名信代表anonymousLetter,求报纸内容是否可以拼成匿名信。
二、输入描述
第一行输入newspaper内容,包括1-N个字符串,用空格分开
第二行输入anonymousLetter内容,包括1-N个字符串,用空格分开
- newspaper和anonymousLetter的字符串由小写英文字母组成且每个字母只能使用一次;
- newspaper内容中的每个字符串字母顺序可以任意调整,但必须保证字符串的完整性(每个字符串不能有多余字母);
- 1<N<100 , 1<= newspaper.length, anonymousLetter.length <= 104;
三、输出描述
如果报纸可以拼成匿名信返回ture,否则返回false。
四、Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String newspaper = sc.nextLine();
String anonymous = sc.nextLine();
String[] arr1 = newspaper.split(" ");
String[] arr2 = anonymous.split(" ");
Set<String> set = new HashSet<>();
for (String s : arr1) {
char[] charArray = s.toCharArray();
Arrays.sort(charArray);
String value = String.valueOf(charArray);
set.add(value);
}
boolean flag = true;
for (String s : arr2) {
char[] chars = s.toCharArray();
Arrays.sort(chars);
String str = String.valueOf(chars);
//如果有匿名的,在set里没有对应上,说明无法拼出,返回false
if (!set.contains(str)) {
flag = false;
break;
}
}
if (flag) {
System.out.println("true");
} else {
System.out.println("false");
}
}
五、效果展示
1、输入
ac df
adf
2、输出
false
🏆下一篇:华为OD机试真题 Java 实现【投篮大赛】【2023Q1 100分】
🏆本文收录于,华为OD机试(JAVA)(2022&2023)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。