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

华为OD-D卷万能字符单词拼写

有一个字符串数组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 <= words.length <= 100
1 <= words[i].length, chars.length <= 100
所有字符串中都仅包含小写英文字母、英文问号

题目解析:本质还是判断一个字符串是否能由另一个字符串组成,字符串由26个字母组成,建一个大小为26的数组来计算每个字母出现的次数即可!

注意:要判断的一个数组中的单词是否学过,加一个循环就行,而且还需要对通配符进行单独的统计。

import java.util.Scanner;public class Main {public static void main(String[] args) {
//        String[] words = new String[]{"cat", "bt", "hat", "tree"};
//        String chars = "atach??";// 处理数据Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();String[] words = new String[n];for (int i = 0; i < n; i++) {words[i] = scanner.next();}String chars = scanner.next();// 计算chars里面出现的字符数和?的次数int[] countChars = new int[26];int count = 0;for (int i = 0; i < chars.length(); i++) {if (chars.charAt(i) == '?') {count++;continue;}countChars[chars.charAt(i) - 'a']++;}int result = 0;// 遍历每个单词,查看是否掌握for (int i = 0; i < words.length; i++) {if (isMasterWord(words[i], countChars, count)) {result++;}}System.out.println(result);}public static boolean isMasterWord(String word, int[] countChars, int count) {for (int i = 0; i < word.length(); i++) {countChars[word.charAt(i) - 'a']--;if (countChars[word.charAt(i) - 'a'] < 0) {count--;// ? 不够用了直接返回falseif (count < 0) {return false;}}}return true;} 
}

相关文章:

华为OD-D卷万能字符单词拼写

有一个字符串数组words和一个字符串chars。 假如可以用chars中的字母拼写出words中的某个“单词”&#xff08;字符串&#xff09;&#xff0c;那么我们就认为你掌握了这个单词。 words的字符仅由 a-z 英文小写字母组成。 例如: abc chars 由 a-z 英文小写字母和 “?”组成。其…...

顶象文字点选模型识别

注意&#xff0c;本文只提供学习的思路&#xff0c;严禁违反法律以及破坏信息系统等行为&#xff0c;本文只提供思路 如有侵犯&#xff0c;请联系作者下架 文字点选如何训练&#xff0c;之前的文章说了很多遍了&#xff0c;这里只放现成的模型供查看&#xff0c;有需要成品联系…...

C#如何将自己封装的nuget包引入到项目中

问题 自己封装好了一个nuget包&#xff0c;但是不想上传到外网&#xff0c;想局域网使用&#xff0c;有两种方案 搭建私有nuget仓库放到离线文件夹中直接使用 第一种方式请请参考proget安装 下面主要是第二种方式 准备 新建类库项目 using System;namespace ClassLibrary…...

数据结构(学习)2024.8.8(栈,队列)

今天学习的是线性表里面的栈和队列 链表的相关知识可以查看http://t.csdnimg.cn/NX464 顺序表的相关知识可以查看http://t.csdnimg.cn/5IMAZ 目录 栈 栈的定义 栈的特点 顺序栈 结构体 顺序栈的相关操作案例 链式栈 结构体 链式栈的相关操作案例 总结 队列 队列…...

服务端开发常用知识(持续更新中)

Java方面 1 基础篇 1.1 网络基础 tcp三次握手和四次挥手-CSDN博客 tcp和udp区别&#xff0c;tcp拥塞控制算法和粘包问题-CSDN博客 http的发展历史&#xff0c;各版本的差异点&#xff0c;以及和https的区别-CSDN博客 2 jvm篇 3 多线程篇 4 mysql篇 5 redis篇 6 kafk…...

MySQL入门学习-运维与架构.复制过滤器

MySQL 复制过滤器是一种用于过滤复制数据的机制。它可以根据特定的规则&#xff0c;选择要复制的数据库、表或列&#xff0c;从而减少复制的数据量&#xff0c;提高复制性能。 一、以下是一些常见的 MySQL 复制过滤器&#xff1a; 1. 基于二进制日志的过滤器&#xff1a; 通过…...

【深度学习】生成领域里,Normalizing Flow、GAN、VAE、Diffusion Models的区别是什么?

文章目录 1. Normalizing Flow2. GAN (Generative Adversarial Networks)3. VAE (Variational Autoencoders)4. Diffusion Models总结1. Normalizing Flow公式代码示例2. GAN (Generative Adversarial Networks)公式代码示例3. VAE (Variational Autoencoders)公式代码示例4. D…...

Qt 串口通信(C++)

1. 基本概念 串口通信&#xff08;Serial Communications&#xff09;的概念非常简单&#xff0c;串口按位&#xff08;bit&#xff09;发送和接收字节。尽管比按字节&#xff08;byte&#xff09;的并行通信慢&#xff0c;但是串口可以在使用一根线发送数据的同时用另一根线接…...

聊聊AUTOSAR: 基于DaVinci的SecOC开发与配置

一、什么是SecOC 当前车载网络通讯环境越来越复杂&#xff0c;未采取任何安全保护的报文&#xff0c;一旦被伪造或者篡改&#xff0c;将非常危险。为了提升信息的安全性&#xff0c;AUTOSAR标准中引进了SecOC&#xff0c;加入了通讯认证机制&#xff0c;能够有效的辨别出信息是…...

.net6.0 重启控制台 命令

在.NET 6.0中&#xff0c;如果你想要创建一个命令行应用程序来重启当前运行的控制台&#xff0c;你可以使用System.Diagnostics命名空间下的Process类来启动一个新的进程&#xff0c;并结束当前进程。 以下是一个简单的示例代码&#xff0c;展示了如何实现重启控制台的功能&am…...

LVS 调度器 nat和DR模式

lvs-nat 修改请求报文的目标IP,多目标IP的DNAT 配置网络 LVS主机 注意网卡的顺序 &#xff08;nat和主机模式&#xff09; [rootlvs ~]# cat /etc/NetworkManager/system-connections/ens160.nmconnection [connection] idens160 typeethernet interface-nameens160 ​ [ip…...

MTK Android12 SystemUI 手势导航 隐藏导航栏底部布局

问题:android12 平台手势导航情况下,app页面未设置全屏情况下,底部导航栏会有一个高度的颜色,底部导航会有一个手势导航提示条 需求:去掉手势导航情况下底部的导航栏和手势提示条 文章目录 相关资源修改问题描述解决方案代码跟踪中间提醒小方块代码查找底部手势导航条跟踪…...

electron调用c++ dll lib

主要的工具包 node-addon-apinode-gyp 主要的配置 {"variables": {# module_mac: "./../sdk/mac",},"targets": [{"target_name": "native_module","defines": ["NAPI_DISABLE_CPP_EXCEPTIONS"],&qu…...

23种设计模式(持续更新中)

参考链接干货分享 | 《设计模式之美》学习笔记 - 知乎 (zhihu.com) 总体来说设计模式分为三大类&#xff1a; 创建型模式&#xff0c;共5种&#xff1a;工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式&#xff0c;共7种&#xff1a;适配器模式、…...

Linux文件系统详解

Linux的一切皆文件 Linux 中的各种事物比如像文档、目录&#xff08;Mac OS X 和 Windows 系统下称之为文件夹&#xff09;、键盘、监视器、硬盘、可移动媒体设备、打印机、调制解调器、虚拟终端&#xff0c;还有进程间通信&#xff08;IPC&#xff09;和网络通信等输入/输出资…...

大数据面试SQL(五):查询最近一笔有效订单

文章目录 查询最近一笔有效订单 一、题目 二、分析 三、SQL实战 四、样例数据参考 查询最近一笔有效订单 一、题目 现有订单表t5_order&#xff0c;包含订单ID&#xff0c;订单时间&#xff0c;下单用户&#xff0c;当前订单是否有效。 请查询出每笔订单的上一笔有效订…...

OpenCV图像滤波(8)getGaborKernel()函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数返回 Gabor 滤波器系数。 Gabor 滤波器在图像处理中非常有用&#xff0c;特别是在纹理分析、特征提取和边缘检测等领域。 函数原型 Mat c…...

门店收银系统源码+同城即时零售多商户入驻商城源码

一、我们为什么要开发这个系统&#xff1f; 1. 商户经营现状 “腰尾部”商户&#xff0c;无小程序运营能力&#xff1b;自营私域商城流量渠道单一&#xff1b;无法和线下收银台打通&#xff0c;库存不同步&#xff0c;商品不同步&#xff0c;订单不同步&#xff1b; 2.平台服…...

MaxKB:基于 LLM大语言模型的知识库问答系统实操

1.MaxKB介绍 MaxKB 是一款基于 LLM&#xff08;Large Language Model&#xff09;大语言模型的知识库问答系统。MaxKB 的产品命名内涵为 “Max Knowledge Base”&#xff0c;为用户提供强大的学习能力和问答响应速度&#xff0c;致力于成为企业的最强大脑。与同类基于 LLM 的知…...

linux文件命令:更新文件时间戳的工具touch详解

目录 一、概述 二. touch 命令的基本用途 三. touch 命令的语法 3.1、语法 3.2、touch 命令的选项 3.3、时间字符串格式 四. 常用场景 4.1 创建空文件 4.2 同时创建多个文件 4.3 更新文件的时间戳 4.4 只更新访问时间 4.5 只更新修改时间 4.6 设置特定时间戳 4.7 使用另…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...