华为OD机试 - 掌握单词个数(Java 2024 D卷 100分)

在这里插入图片描述

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

专栏导读

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

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

有一个字符串数组 words 和一个字符串 chars 。

假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。

words 的字符仅由 a-z 英文小写字母组成,例如 “abc” chars 由 a-z 英文小写字母和 “?” 组成。其中英文问号 “?” 表示万能字符,能够在拼写时当做任意一个英文字母。例如:“?” 可以当做 “a” 等字母。

注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。

输出词汇表 words 中你掌握的所有单词的个数。没有掌握任何单词,则输出 0。

二、输入描述

第 1 行输入数组 words 的个数,记为 N。 从第 2 行开始到第 N+1 行一次输入数组 words 的每个字符串元素。 第 N+2 行输入字符串 chars。

三、输出描述

输出一个整数,表示词汇表 words 中你掌握的单词个数。

1、输入

4
cat
bt
hat
tree
atach

2、输出

2

3、说明

atach可以拼写出单词cat和hat,因此掌握的单词是2个。

四、解题思路

要解决这个问题,我们需要以下几个步骤:

  1. 读取输入:
    • 首先读取单词数组 words 的个数 N。
    • 读取 N 个单词并存储在 words 列表中。
    • 读取包含可用字符的字符串 chars。
  2. 统计字符频率:
    • 统计 chars 中每个字符(包括万能字符 ?)的频率。
  3. 验证单词是否可拼写:
    • 对于每个单词,检查其每个字符是否可以由 chars 中的字符构成,考虑万能字符 ?。
    • 使用一个字典来记录 chars 中字符的剩余使用次数,在验证过程中逐个减少字符的可用次数。
  4. 计算掌握的单词个数:
    • 如果一个单词可以被拼写出来,则增加掌握的单词计数。

五、Java算法源码

public class Test01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取单词的数量int n = Integer.parseInt(scanner.nextLine());String[] words = new String[n];// 读取所有单词for (int i = 0; i < n; i++) {words[i] = scanner.nextLine();}// 读取可用字符的字符串String chars = scanner.nextLine();scanner.close();// 输出掌握的单词个数System.out.println(countMasteredWords(words, chars));}public static int countMasteredWords(String[] words, String chars) {// 统计 chars 中每个字符的频率Map<Character, Integer> charCount = new HashMap<>();for (char ch : chars.toCharArray()) {charCount.put(ch, charCount.getOrDefault(ch, 0) + 1);}int masteredWordsCount = 0;// 验证每个单词是否可以由 chars 中的字符拼写出来for (String word : words) {if (canSpell(word, new HashMap<>(charCount))) {masteredWordsCount++;}}return masteredWordsCount;}public static boolean canSpell(String word, Map<Character, Integer> charCount) {int wildcardCount = charCount.getOrDefault('?', 0);for (char ch : word.toCharArray()) {if (charCount.getOrDefault(ch, 0) > 0) {charCount.put(ch, charCount.get(ch) - 1);} else if (wildcardCount > 0) {wildcardCount--;} else {return false;}}return true;}
}

六、效果展示

1、输入

4
cat
bt
hat
tree
at?ch

2、输出

3

3、说明

at?ch可以拼写出单词cat、hat和bt,因此掌握的单词是3个。

在这里插入图片描述


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

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

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旧衣回收小程序开发:回收市场的新机遇

当下&#xff0c;旧衣服回收已经成为了一种流行趋势&#xff0c;居民都将闲置的衣物进行回收&#xff0c;旧衣回收市场规模在不断增加。随着市场规模的扩大&#xff0c;为了让居民更加便利地进行回收&#xff0c;线上回收小程序也应运而生&#xff0c;为大众打造了一个线上回收…

tldraw白板组件

tldraw 是一个开源的白板组件&#xff0c;10行代码就可以将其接入到 React 项目中&#xff1a; import { Tldraw } from tldraw import tldraw/tldraw.cssexport default function App() {return (<div style{{ position: fixed, inset: 0 }}><Tldraw /></div&…

u盘插到另一台电脑上数据丢失怎么办?提供实用的解决方案

在现代数字化生活中&#xff0c;U盘作为一种便携式存储设备&#xff0c;承载着我们重要的数据和信息。然而&#xff0c;有时当我们将U盘插入另一台电脑时&#xff0c;可能会遇到数据丢失的棘手问题。这可能是由于多种原因造成的&#xff0c;那么&#xff0c;U盘插到另一台电脑上…

虚拟化技术(一)

目录 一、虚拟化技术简介二、服务器虚拟化&#xff08;一&#xff09;服务器虚拟化的层次&#xff08;二&#xff09;服务器虚拟化的底层实现&#xff08;三&#xff09;虚拟机迁移&#xff08;四&#xff09;隔离技术&#xff08;五&#xff09;案例分析 一、虚拟化技术简介 虚…

ubuntu中共享文件夹看不到了,解决方法

1、检查共享文件夹配置 2、创建 3、查看共享文件夹 4、另一问题&#xff0c;每次重启虚拟机后&#xff0c;共享文件夹又没了&#xff1f;

Git->git pull 和 git pull --rebase的详解

Git拉取代码的坑 格式&#xff1a;git xx指令 origin/远程仓库分支名称假如本地仓库和远程仓库都是空的 本地仓库向远程仓库提交一个文件 git commit -a -m "local first commit"&#xff1a;-a暂存修改文件到暂存区&#xff0c;准备本地提交。-m表示提交信息git pu…

常微分方程算法之编程示例五(阿当姆斯法)

目录 一、研究问题 二、C代码 三、计算结果 一、研究问题 本节我们采用阿当姆斯法&#xff08;Adams法&#xff09;求解算例。 阿当姆斯法的原理及推导请参考&#xff1a; 常微分方程算法之阿当姆斯法&#xff08;Adams法&#xff09;_四步四阶adams显格式;三步四阶adams隐…

10.二次开发——黑马程序员Java最新AI+若依框架项目

目录 前言零、使用若依修改器修改项目名称一、创建sky-merchant模块1.创建模块2. 在新模块中导入依赖3. 父工程锁定版本4. sky-admin 导入依赖 二、菜品管理页面生成1.根据页面原型&#xff0c;确定表信息2.设计表3使用代码生成器生成页面4&#xff0c;下载tb_dish代码并分别导…

Matlab|【免费】含氢气氨气综合能源系统优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序参考《_基于氨储能技术的电转氨耦合风–光–火综合能源系统双层优化调度》模型&#xff0c;对制氨工厂、风力发电、电制氢、燃气轮机、火电机组等主体进行建模分析&#xff0c;以火电机组启停成本、煤耗…

VS Code修改菜单栏字体大小

修改方法 打开VS Code&#xff0c;快捷键 CtrlShiftP&#xff0c;在弹出的输入框中输入 setting&#xff0c;找到带有JSON的一项&#xff0c;如图所示&#xff1a; 原文链接 window.zoomLevel 前后变化 终端字体大小 File -> Preferences -> Settings -> Features…

海外短剧系统:一扇窥探多元文化的奇妙之窗

随着全球化的推进&#xff0c;文化交流的壁垒逐渐消融&#xff0c;我们得以更加便捷地领略到世界各地的独特风情。在这一背景下&#xff0c;海外短剧系统应运而生&#xff0c;它如同一扇扇虚拟的窗户&#xff0c;将我们带入不同国家、不同民族、不同文化的世界&#xff0c;让我…

Spark算法之ALS模型(附Scala代码)

Spark算法之ALS模型&#xff08;附Scala代码&#xff09; 在大数据时代&#xff0c;个性化推荐系统已成为连接用户与信息的桥梁&#xff0c;而算法则是构建这一桥梁的基石。Apache Spark&#xff0c;作为一款强大的分布式计算系统&#xff0c;提供了丰富的机器学习库&#xff…

比特币生态系统的现状与流动性提升的新路径

自2009年中本聪发布比特币白皮书以来&#xff0c;比特币一直被誉为“数字黄金”&#xff0c;在加密货币领域占据着不可动摇的地位。其去中心化、稀缺性和安全性&#xff0c;增强了其作为长期价值储存工具的吸引力。 相比之下&#xff0c;以太坊自2015年问世以来&#xff0c;凭…

超低排放标准

据朗观视觉小编了解发现&#xff0c;超低排放标准作为衡量一个行业或企业环保水平的重要指标&#xff0c;越来越受到社会各界的关注。本文将深入探讨超低排放标准的内涵、实施意义以及未来展望。 一、超低排放标准的定义 超低排放标准&#xff0c;是指在特定工业生产过程中&am…

视频共享融合赋能平台LntonCVS统一视频接入平台数字化升级医疗体系

医疗健康事关国计民生&#xff0c;然而&#xff0c;当前我国医疗水平的地区发展不平衡、医疗资源分布不均和医疗信息系统老化等问题&#xff0c;制约了整体服务能力和水平的提升。视频融合云平台作为推动数字医疗的关键工具&#xff0c;在医疗领域的广泛应用和普及&#xff0c;…

Oracle - 数据库打补丁实践

原文&#xff1a;https://www.cnblogs.com/ddzj01/p/12097467.html 一、概述 本文将介绍如何给oracle数据库打最新补丁&#xff0c;数据库版本为11.2.0.4单实例&#xff0c;操作系统为redhat6.5 二、下载相关升级包 1. 登录MOS&#xff0c;查阅(ID 2118136.2)&#xff0c;下载…

如何快速把一篇文章或企业介绍变为视频?

随着科技和数字化的不断发展&#xff0c;企业的营销手段也在不断变革。尤其对于产品宣传来说&#xff0c;用生动的视觉语言直观地展示产品特点和优势&#xff0c;能够彰显企业实力&#xff0c;让社会不同层面的人士对企业产生正面、良好的印象&#xff0c;从而建立对该企业的好…

开发技术-Java集合(List)删除元素的几种方式

文章目录 1. 错误的删除2. 正确的方法2.1 倒叙删除2.2 迭代器删除2.3 removeAll() 删除2.4 removeIf() 最简单的删除 3. 总结 1. 错误的删除 在写代码时&#xff0c;想将其中的一个元素删除&#xff0c;就遍历了 list &#xff0c;使用了 remove()&#xff0c;发现效果并不是想…

CircuitBreaker断路器-Resilience4j

目录 背景分布式架构面临的问题&#xff1a;服务雪崩如何解决&#xff1f; CircuitBreakerResilience4jCircuitBreaker 服务熔断服务降级三种状态转换例子参数配置案例demo作业 BulkHead隔离特性SemaphoreBulkhead使用了信号量FixedThreadPoolBulkhead使用了有界队列和固定大小…

Opencv中RotatedRect和ellipse的角度方向

版本&#xff1a;opencv-4.7.0-windows Opencv中&#xff0c;大多数时候&#xff0c;逆时针旋转是正方向&#xff0c;但在RotatedRect和ellipse中&#xff0c;顺时针旋转是正方向。 //RotatedRect的角度参数是顺时针为正方向 RotatedRect(const Point2f& center, const Si…