华为OD机试真题 JavaScript 实现【字符串通配符】【2022Q4 200分】

news2024/11/27 2:37:35

在这里插入图片描述

一、题目描述

问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。

要求:

实现如下2个通配符:

  • :匹配0个或以上的字符(注:能被和?匹配的字符仅由英文字母和数字0到9组成,下同)
  • ?:匹配1个字符

注意:匹配时不区分大小写。

二、输入描述

通配符表达式;
一组字符串。

三、输出描述

返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false。

四、解题思路

  1. 首先读取输入的通配符表达式和一组字符串;
  2. 将通配符表达式和目标字符串都转换为小写字母,以实现不区分大小写的匹配;
  3. 对通配符表达式进行替换,将连续多个 “" 替换为单个 "”,将 “?” 替换为 “[0-9a-z]{1}”,将 “*” 替换为 “[0-9a-z]{0,}”;
  4. 使用目标字符串与替换后的通配符表达式进行正则表达式匹配,使用 matches 方法判断是否匹配成功;
  5. 输出匹配结果,匹配成功输出 true,匹配失败输出 false;
  6. 循环执行上述步骤,直到没有输入数据;

五、JavaScript算法源码

function matchWildcard(wildcard, target) {
	// 将通配符表达式和目标字符串都转换为小写字母,以实现不区分大小写的匹配
    let value = wildcard.toLowerCase();
    // 对通配符表达式进行替换,将连续多个 “" 替换为单个 "”
    let regx = value.replace(/\*{2,}/g, '*');
    // 将 “?” 替换为 “[0-9a-z]{1}”
    regx = regx.replace(/\?/g, '[0-9a-z]{1}');
    // 将 “*” 替换为 “[0-9a-z]{0,}”
    regx = regx.replace(/\*/g, '[0-9a-z]{0,}');
    // 使用目标字符串与替换后的通配符表达式进行正则表达式匹配
    const regex = new RegExp('^' + regx + '$', 'i');
    return regex.test(target.toLowerCase());
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

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

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

【一文解决】已安装CUDA与Pytorch但torch.cuda.is_available()为False

目录 问题描述总览:导致问题的原因可能1:CUDA版本与驱动程序不兼容可能2:CUDA库的路径设置存在问题可能3:PyTorch版本与CUDA版本不匹配可能4:编译问题可能5:软件包或库冲突写在最后 问题描述 已经安装CUDA…

2023 陕西省大学生网络安全技能大赛 --- 高职组 Crypto ezmath

文章目录 题目解题过程 题目 from Crypto.Util.number import * from secret import y,a,b flagbflag{} l len(flag) m1, m2 flag[: l // 2], flag[l // 2:]x bytes_to_long(m1) c bytes_to_long(m2)assert (x**21)*(y**21)-2*(xy)*(x*y1)gift-4*x*y 4*b**6-2*a**33*a*c …

JavaScript案例分享:让前端开发者抓狂的按钮

前言 我分享一个前端案例,代码来源我不确定,可能是我某个编程技术交流群的群友分享的。由于我设置了自动下载文件,今天在查看微信文件时偶然发现了这个案例,查看下载日期是6月7日,所以无法确定到底是哪个群友分享的。但…

618,你会入手哪些书?【文末送书】

好书分享 前沿技术人工智能半导体新一代通信与信息技术网络空间安全参与规则 一年一度的618又到啦!今年的618就不要乱买啦,衣服买多了会被淘汰,电子产品买多了会过时,零食买多了会增肥,最后怎么看都不划算。可是如果你…

超强整理,性能测试-常用服务器性能指标分析总结,一篇概全...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 压测过程中&#…

Hive SQL DML

Hive SQL DML 本节所需数据集 数据集 提取码:rkun ⛵加载数据 Load 加载,装载将数据文件移动到与Hive表对应位置,移动时是纯复制,移动操作。纯复制移动指数据load加载到表中,hive不会对表中数据内容进行任何变换&…

Cache技术在星辰处理器中的应用

Cache技术在星辰处理器中的应用-修复MicroPython在MM32F5上启动慢的问题 文章目录 Cache技术在星辰处理器中的应用-修复MicroPython在MM32F5上启动慢的问题引言Cache的工作原理需要关闭DCache的情况鱼和熊掌都想要使用内存保护单元MPU使用内存隔离/同步指令 总结参考文献 引言 …

catkin cmake官方教程解读以及资料补充

这里写目录标题 cmakei下载cmake 官方教程教程1step1最低版本 报错报错2 vscode 路径没有配置好setting.json通过该方式打开的似乎是一个全局的文件,可以为本工作文件夹下设置一个本地的吗 报错3配置cmake工具链准确的流程报错4 cpp中main函数返回值问题结果 官方教…

虚拟机centos7无法正常启动:Generating“/run/initramfs/rdsosreport.txt“

一、问题描述 1.出现问题的原因 Centos 7 断电导致 ,最近电脑老是自己蓝屏,然后重启电脑,一个月里断断续续可能有个3次左右,突然发现启动就这个问题,估计是虚拟机异常物理断电导致的系统磁盘出错了 2.具体的报错信息…

打开冒险岛提示丢失vcruntime140.dll的解决方法

今天准备打开冒险岛软件的时候,当打开我自己的冒险岛软件后,弹出了一个对话框,内容是:由于找不到vcruntime140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题。 我很纳闷,前几天还好好着呢。于是…

【ARIMA-WOA-LSTM】合差分自回归移动平均方法-鲸鱼优化-长短期记忆神经网络研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

vue新手入门实践教程

介绍vue运行环境的搭建、vue项目的初步构建与运行、使用element-ui组件构建页面内容、使用页面模块与路由设置等。基于此教程,可以初步实现一个静态网页,并对vue项目由一定理解。 1、基本环境安装 vue项目的编译运行依赖nodejs环境,故需要下…

使用rasterio计算tif文件中两点之间的物理实际距离

假设有一张含有地理坐标信息的tif格式的图片及其对应的jpg或者png格式的普通图片 如下图所示: 其中第一张为tif格式的地理信息图,第二张为按照一定比例下采样之后转换得到的普通jpg图片 如何计算jpg图片中任意两点之间的实际距离呢? 比如&a…

终于等到你:期待已久的CAD .NET 15 Crack

期待已久的CAD .NET 15 现已推出!新包包括一个.NET 6 框架构建。目前,它仅与 Windows 兼容,但我们计划在未来的版本中添加对 Linux 的支持。 我们还进行了一系列更改以增强库的稳定性并改进其导入和导出功能。他们来了: 改进了 DW…

Scala--03

第6章 面向对象 Scala 的面向对象思想和Java 的面向对象思想和概念是一致的。 Scala 中语法和 Java 不同,补充了更多的功能。 6.1类和对象详解 6.1.1组成结构 构造函数: 在创建对象的时候给属性赋值 成员变量: 成员方法(函数) 局部变量 代码块 6.1.2构造器…

详解c++---map的介绍

目录标题 map容器的介绍pair的介绍map的构造函数insert函数make_pair函数find函数map的[ ]重载multimap map容器的介绍 通过之前的学习想必大家对set容器的理解应该非常的深刻了,我们知道他的底层是一个k结构的搜索二叉树,可以对数据进行去重并排序&…

Redis实现分布式锁详解

Redis实现分布式锁详解 一 分布式锁简介二 Redis实现分布式锁核心思路三 Redis实现分布式锁实践3.1 锁的基本接口3.2 加锁解锁逻辑3.3 修改业务逻辑3.4 单元测试观察结果 四 Redis分布式锁误删情况4.1.Redis分布式锁误删情况逻辑说明:4.2 解决Redis分布式锁误删问题…

当心健身跑步应用悄悄泄露用户住址

据BleepingComputer 6月11日消息,美国北卡罗来纳州立大学罗利分校的研究人员发现 Strava 应用程序的热图功能存在隐私风险,可能导致攻击者识别出用户的家庭住址。 Strava 是一款流行的跑步伴侣和健身追踪应用程序,在全球拥有超过 1 亿用户&a…

2个月“我“从功能测试进阶到自动化测试,offer收到麻了...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试是将人…

C++【STL】之vector模拟实现

C vector类模拟实现 上一篇讲解了vector的使用,这一篇接着介绍vector的模拟实现,这里依然是讲解常用接口的模拟实现,话不多说,正文开始! 文章目录: C vector类模拟实现1. 成员变量2. 默认成员函数2.1 构造…