当前位置: 首页 > news >正文

华为OD机试 - 匿名信(Java 2024 E卷 100分)

在这里插入图片描述

华为OD机试 2024E卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

电视剧《分界线Q》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。
现在一名举报人,希望借鉴这部片段,使用英文报刊为范本来剪拼举报信。
但为了增加文章的混淆程度,尽量避免每个单词中字母数量一致即可,不关注每个字母的顺序。
解释:单词n允许抄袭过n的字母组合。

报纸代表newspaper,匿名信代表anonymousLetter,求报纸内容是否可以拼成匿名信。

二、输入描述

第一行newspaper内容,包括1N个字符,并且空格分开

第二行anonymousLetter内容,包括1N个字符,并且空格分开。

newspaper和anonymousLetter的字符串中均为英文字母组成,且每个字母只能使用一次;

newspaper内容中的每个字符中字母顺序可以任意调整,但必须保证字符串的完整性(每个字符串不能有多余字母)

1 < N < 100,

1 <= newspaper.length,anonymousLetter.length <= 104

三、输出描述

如果报纸可以拼成匿名信返回true,否则返回false

四、测试用例

测试用例1:

1、输入

ab cd
ab

2、输出

true

3、说明

测试用例2:

1、输入

ab ef
aef

2、输出

false

3、说明

五、解题思路

  1. 读取输入,包括报纸内容和匿名信内容。
  2. 将报纸和匿名信中的每个单词进行字母排序,得到其“规范形式”。
    • 例如,单词“ab”排序后仍为“ab”,单词“aef”排序后为“aef”。
  3. 统计报纸中每种规范形式的单词出现次数,存入一个哈希映射 newspaperMap 中。
  4. 统计匿名信中每种规范形式的单词出现次数,存入另一个哈希映射 letterMap 中。
  5. 遍历匿名信中的每种规范形式,检查报纸中是否有足够数量的对应单词。
    • 如果报纸中某种规范形式的单词数量少于匿名信中需要的数量,则返回 false。
  6. 如果所有匿名信中的单词都在报纸中有足够的对应单词,则返回 true。

六、Java算法源码

public class OdTest {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取报纸内容,并按空格分割成单词数组String newspaperLine = scanner.nextLine().trim();String[] newspaperWords = newspaperLine.split("\\s+");// 读取匿名信内容,并按空格分割成单词数组String letterLine = scanner.nextLine().trim();String[] letterWords = letterLine.split("\\s+");// 关闭扫描器scanner.close();// 计算报纸中每种规范形式的单词出现次数Map<String, Integer> newspaperMap = new HashMap<>();for (String word : newspaperWords) {String sortedWord = sortLetters(word);newspaperMap.put(sortedWord, newspaperMap.getOrDefault(sortedWord, 0) + 1);}// 计算匿名信中每种规范形式的单词出现次数Map<String, Integer> letterMap = new HashMap<>();for (String word : letterWords) {String sortedWord = sortLetters(word);letterMap.put(sortedWord, letterMap.getOrDefault(sortedWord, 0) + 1);}// 检查报纸中是否有足够的单词来组成匿名信boolean canForm = true;for (Map.Entry<String, Integer> entry : letterMap.entrySet()) {String sortedWord = entry.getKey();int requiredCount = entry.getValue();int availableCount = newspaperMap.getOrDefault(sortedWord, 0);if (availableCount < requiredCount) {canForm = false;break;}}// 输出结果System.out.println(canForm ? "true" : "false");}/*** 将单词中的字母按字母序排序,并返回排序后的字符串** @param word 原始单词* @return 排序后的单词*/private static String sortLetters(String word) {char[] chars = word.toCharArray();Arrays.sort(chars);return new String(chars);}
}

七、效果展示

1、输入

ab bcd ef
cbd fe

2、输出

true

3、说明

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 E卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

http://www.lryc.cn/news/469597.html

相关文章:

  • 通过rancher2.7管理k8s1.24及1.24以上版本的k8s集群
  • text-align的属性justify
  • 使用python自制桌面宠物,好玩!——枫原万叶桌宠,可以直接打包成exe去跟朋友炫耀。。。
  • 使用 ASP.NET Core 8.0 创建最小 API
  • 气候服务平台ClimateSERV2.0简介(python)
  • Docker | centos7上对docker进行安装和配置
  • React--》掌握Valtio让状态管理变得轻松优雅
  • python爬虫百度图片
  • 前端开发:Vue中数据绑定原理
  • CTF-RE 从0到N: TEA
  • python 使用PIL获取图片长宽
  • 【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS 软路由OpenWrt Docker Win10远程桌面)
  • linux 驱动源码分析的理解。
  • 鸿蒙-任务栏右击退出 或 UIAbility窗口关闭,怎么弹框拦截
  • 【C++进阶篇】——STL的简介
  • 信息安全工程师(70)网络攻击陷阱技术与应用
  • Web保存状态的手段(Session的使用)
  • 第五十四章 安全元素的详细信息 - DerivedKeyToken 详情
  • kafka 的高可用机制是什么?
  • 4.1.3 网站通信技术
  • Java-图书管理系统
  • python如何通过json以及pickle读写保存数据
  • 【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)
  • Linux vim编辑器
  • 普推知产:申请商标名称从4字改成3字下了初审!
  • Flink 状态精准一次性特性
  • 算法笔记day08
  • 在Selenium中有哪些元素对象操作方法?( ̄﹃ ̄)
  • sqli-labs靶场安装以及刷题记录-docker
  • 谷歌仓库管理工具repo